HotCakeX / Harden-Windows-Security

Harden Windows Safely, Securely using Official Supported Microsoft methods and proper explanation | Always up-to-date and works with the latest build of Windows | Provides tools and Guides for Personal, Enterprise, Government and Military security levels | Read The Rationale https://github.com/HotCakeX/Harden-Windows-Security/blob/main/Rationale.md
https://hotcakex.github.io
MIT License
1.87k stars 148 forks source link

Harden Windows Security v0.5.5 #319

Closed HotCakeX closed 3 months ago

HotCakeX commented 3 months ago

What's New

Harden Windows Security App Demo



What's Next


Resolves #318


agpt8 commented 3 months ago

Getting this error after updating image

HotCakeX commented 3 months ago

@agpt8 What do you see when you run these

Import-module -Name 'Harden-Windows-Security-Module'
Get-Error
agpt8 commented 3 months ago

image

HotCakeX commented 3 months ago

@agpt8 Can you temporarily disable the "oh my posh" addon that you are using and then try again? You might have to restart the terminal or your PC, I haven't used it so I'm not sure what it changes.

btw there hasn't been any changes to the commands and parameters, Confirm-SystemCompliance has no -GUI parameter. The GUI is available just like before with Protect-WindowsSecurity -GUI.

agpt8 commented 3 months ago

image

HotCakeX commented 3 months ago

@agpt8 Something in your PowerShell environment is loading some dlls that is interfering with the module, I don't know what that is, try this command, it might show what's already loaded that is causing it

Get-Module
agpt8 commented 3 months ago

This is all I have

image

Update: It has something to do with the first three modules that are loaded. I renamed the powershell profile file so that it does not read it, then tried again. Only PSReadLine was loaded. When I tried to run the module with GUI again, it loaded just fine. This is quite odd as I have been using the module normally with everything loading in the background. I guess this update clashes with something which is causing errors

HotCakeX commented 3 months ago

Thanks, so for comparison this is what i have by default. image


Currently what I'm suspecting is either PowerToys' CommandNotFound extension or Winget's PowerShell module is the source of the interference.

The reason it used to work before but now it has interference is because of the 5 new Microsoft DLLs that are included. The error basically means something else already loaded those DLLs in the current session so when the Harden Windows Security module tries to load them again, it displays an error.

I'll try to match your environment, reproduce the error and then think about a solution I can implement in the next update.

agpt8 commented 3 months ago

Another error: I tried the Confirm and Verify tab on the GUI, pressed the play button, it showed loading and now it seems stuck. The animations on the button are stuck and I cannot click anything on the GUI. Had to force it to close, the window controls seem stuck as well.

HotCakeX commented 3 months ago

That must be the Defender scanning the new module files, try again, it should work

agpt8 commented 3 months ago

I tried again, interestingly, I got the following on the terminal side:

PowerShell 7.4.5
PS C:\Users\ayush> Protect-WindowsSecurity -GUI
MethodInvocationException: Exception calling "Run" with "1" argument(s): "One or more errors occurred. (PowerShell script execution failed: Error:
Class not registered  Category: NotSpecified Target:  Script StackTrace: at <ScriptBlock>, <No file>: line 2 Exception
Type: System.Runtime.InteropServices.COMException StackTrace:    at
System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord))"

ErrorRecord                 : Exception calling "Run" with "1" argument(s): "One or more errors occurred. (PowerShell
                              script execution failed: Error: Class not registered

                              Category: NotSpecified
                              Target:
                              Script StackTrace: at <ScriptBlock>, <No file>: line 2
                              Exception Type: System.Runtime.InteropServices.COMException
                              StackTrace:    at
                              System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord
                              errorRecord))"
WasThrownFromThrowStatement : False
TargetSite                  : Void CheckActionPreference(System.Management.Automation.Language.FunctionContext,
                              System.Exception)
Message                     : Exception calling "Run" with "1" argument(s): "One or more errors occurred. (PowerShell
                              script execution failed: Error: Class not registered

                              Category: NotSpecified
                              Target:
                              Script StackTrace: at <ScriptBlock>, <No file>: line 2
                              Exception Type: System.Runtime.InteropServices.COMException
                              StackTrace:    at
                              System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord
                              errorRecord))"
Data                        : {[System.Management.Automation.Interpreter.InterpretedFrameInfo,
                              System.Management.Automation.Interpreter.InterpretedFrameInfo[]]}
InnerException              : System.AggregateException: One or more errors occurred. (PowerShell script execution
                              failed: Error: Class not registered

                              Category: NotSpecified
                              Target:
                              Script StackTrace: at <ScriptBlock>, <No file>: line 2
                              Exception Type: System.Runtime.InteropServices.COMException
                              StackTrace:    at
                              System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord
                              errorRecord))
                               ---> System.InvalidOperationException: PowerShell script execution failed: Error: Class
                              not registered

                              Category: NotSpecified
                              Target:
                              Script StackTrace: at <ScriptBlock>, <No file>: line 2
                              Exception Type: System.Runtime.InteropServices.COMException
                              StackTrace:    at
                              System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord
                              errorRecord)
                                 at HardenWindowsSecurity.PowerShellExecutor.ExecuteScript(String script, Boolean
                              returnOutput)
                                 at HardenWindowsSecurity.WindowsFeatureChecker.GetCapabilityState(String
                              capabilityName)
                                 at HardenWindowsSecurity.WindowsFeatureChecker.CheckWindowsFeatures()
                                 at HardenWindowsSecurity.ConfirmSystemComplianceMethods.<>c.<VerifyOptionalWindowsFeat
                              ures>b__14_0()
                                 at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread
                              threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object
                              state)
                              --- End of stack trace from previous location ---
                                 at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread
                              threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object
                              state)
                                 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread
                              threadPoolThread)
                              --- End of stack trace from previous location ---
                                 at HardenWindowsSecurity.ConfirmSystemComplianceMethods.RunComplianceMethodsInParallel
                              Async(String[] methodNames)
                                 --- End of inner exception stack trace ---
                                 at HardenWindowsSecurity.ConfirmSystemComplianceMethods.OrchestrateComplianceChecks(St
                              ring[] methodNames)
                                 at HardenWindowsSecurity.InvokeConfirmation.Invoke(String[] Categories)
                                 at HardenWindowsSecurity.GUIMain.NavigationVM.<>c.<Confirm>b__4_4()
                                 at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread
                              threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object
                              state)
                              --- End of stack trace from previous location ---
                                 at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread
                              threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object
                              state)
                                 at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread
                              threadPoolThread)
                              --- End of stack trace from previous location ---
                                 at HardenWindowsSecurity.GUIMain.NavigationVM.<>c__DisplayClass4_0.<<Confirm>b__1>d.Mo
                              veNext()
                              --- End of stack trace from previous location ---
                                 at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
                                 at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback,
                              Object args, Int32 numArgs)
                                 at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate
                              callback, Object args, Int32 numArgs, Delegate catchHandler)
                                 at System.Windows.Threading.DispatcherOperation.InvokeImpl()
                                 at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
                                 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,
                              ContextCallback callback, Object state)
                              --- End of stack trace from previous location ---
                                 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,
                              ContextCallback callback, Object state)
                                 at
                              MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext
                              executionContext, ContextCallback callback, Object state)
                                 at System.Windows.Threading.DispatcherOperation.Invoke()
                                 at System.Windows.Threading.Dispatcher.ProcessQueue()
                                 at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr
                              wParam, IntPtr lParam, Boolean& handled)
                                 at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam,
                              Boolean& handled)
                                 at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback,
                              Object args, Int32 numArgs)
                                 at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate
                              callback, Object args, Int32 numArgs, Delegate catchHandler)
                                 at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority,
                              TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
                                 at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam,
                              IntPtr lParam)
                                 at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
                                 at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
                                 at System.Windows.Application.RunDispatcher(Object ignore)
                                 at System.Windows.Application.RunInternal(Window window)
                                 at CallSite.Target(Closure, CallSite, Application, Window)
HelpLink                    :
Source                      : System.Management.Automation
HResult                     : -2146233087
StackTrace                  :    at
                              System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext
                              funcContext, Exception exception)
                                 at
                              System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame
                              frame)
                                 at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(Interp
                              retedFrame frame)
                                 at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(Interp
                              retedFrame frame)

MyCommand             :
BoundParameters       : {}
UnboundArguments      : {}
ScriptLineNumber      : 363
OffsetInLine          : 17
HistoryId             : 1
ScriptName            : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Core\
                        Protect-WindowsSecurity.psm1
Line                  :                 [System.Void]
                        [HardenWindowsSecurity.GUIMain]::app.Run([HardenWindowsSecurity.GUIMain]::mainGUIWindow)

Statement             : [System.Void]
                        [HardenWindowsSecurity.GUIMain]::app.Run([HardenWindowsSecurity.GUIMain]::mainGUIWindow)
PositionMessage       : At C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Co
                        re\Protect-WindowsSecurity.psm1:363 char:17
                        + …             [System.Void] [HardenWindowsSecurity.GUIMain]::app.Run([H …
                        +               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PSScriptRoot          : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Core
PSCommandPath         : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Core\
                        Protect-WindowsSecurity.psm1
InvocationName        :
PipelineLength        : 0
PipelinePosition      : 0
ExpectingInput        : False
CommandOrigin         : Internal
DisplayScriptPosition :

PS C:\Users\ayush>

Also, a few more observations, the confirm and verify tab only shows loading for me (the animations and regular window interactivity works), though the Protect tab shows a few logs that seem to be for the Confirm task? These should be on the Confirm tab right? And after it completes verifying, the Confirm tab does not show anything though, just Loading... image

Also, the categories on the Protect tab have the tooltips showing way to quickly on hover, a slight pause and delay on hover would be better imo. And the scrolling of the category list is too quick on the precision trackpad, even a very slight scroll would instantly scroll the list to the end. Very hard to control it without grabbing and manually scrolling.

Oh and now the window is stuck again. Completely non-interactive.

agpt8 commented 3 months ago

Sorry for badgering you, but the Confirm-SystemCompliance cli also throws error image

Here is the full trace:

PS C:\Users\ayush> Confirm-SystemCompliance
Exception: Exception calling "Invoke" with "1" argument(s): "One or more errors occurred. (PowerShell script execution failed:
Error: Class not registered  Category: NotSpecified Target:  Script StackTrace: at <ScriptBlock>, <No file>: line 2
Exception Type: System.Runtime.InteropServices.COMException StackTrace:    at
System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord))"
PS C:\Users\ayush> Get-Error

Exception             :
    Type                        : System.Management.Automation.MethodInvocationException
    ErrorRecord                 :
        Exception             :
            Type    : System.Management.Automation.ParentContainsErrorRecordException
            Message : Exception calling "Invoke" with "1" argument(s): "One or more errors occurred. (PowerShell
script execution failed: Error: Class not registered
                      Category: NotSpecified
Target:
Script StackTrace: at <ScriptBlock>, <No file>: line 2
Exception Type: System.Runtime.InteropServices.COMException
StackTrace:    at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord))"
            HResult : -2146233087
        CategoryInfo          : NotSpecified: (:) [], ParentContainsErrorRecordException
        FullyQualifiedErrorId : AggregateException
        InvocationInfo        :
            ScriptLineNumber : 158
            OffsetInLine     : 13
            HistoryId        : 1
            ScriptName       : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.
5\Core\Confirm-SystemCompliance.psm1
            Line             : [HardenWindowsSecurity.InvokeConfirmation]::Invoke($Categories)

            Statement        : [HardenWindowsSecurity.InvokeConfirmation]::Invoke($Categories)
            PositionMessage  : At C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0
.5.5\Core\Confirm-SystemCompliance.psm1:158 char:13
                               +             [HardenWindowsSecurity.InvokeConfirmation]::Invoke($Categ …
                               +             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            PSScriptRoot     :
C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Core
            PSCommandPath    : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.
5\Core\Confirm-SystemCompliance.psm1
            CommandOrigin    : Internal
        ScriptStackTrace      : at Confirm-SystemCompliance<Process>, C:\Users\ayush\OneDrive\Documents\PowerShell\Modu
les\Harden-Windows-Security-Module\0.5.5\Core\Confirm-SystemCompliance.psm1: line 158
                                at <ScriptBlock>, <No file>: line 1
    WasThrownFromThrowStatement : True
    TargetSite                  :
        Name          : CheckActionPreference
        DeclaringType : [System.Management.Automation.ExceptionHandlingOps]
        MemberType    : Method
        Module        : System.Management.Automation.dll
    Message                     : Exception calling "Invoke" with "1" argument(s): "One or more errors occurred.
(PowerShell script execution failed: Error: Class not registered
                                  Category: NotSpecified
Target:
Script StackTrace: at <ScriptBlock>, <No file>: line 2
Exception Type: System.Runtime.InteropServices.COMException
StackTrace:    at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord))"
    Data                        : System.Collections.ListDictionaryInternal
    InnerException              :
        Type            : System.AggregateException
        InnerExceptions :
            Type       : System.InvalidOperationException
            TargetSite :
                Name          : ExecuteScript
                DeclaringType : [HardenWindowsSecurity.PowerShellExecutor]
                MemberType    : Method
                Module        : bfiqgimx.vn5.dll
            Message    : PowerShell script execution failed: Error: Class not registered
                         Category: NotSpecified
Target:
Script StackTrace: at <ScriptBlock>, <No file>: line 2
Exception Type: System.Runtime.InteropServices.COMException
StackTrace:    at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)
            Source     : bfiqgimx.vn5
            HResult    : -2146233079
            StackTrace :
   at HardenWindowsSecurity.PowerShellExecutor.ExecuteScript(String script, Boolean returnOutput)
   at HardenWindowsSecurity.WindowsFeatureChecker.GetCapabilityState(String capabilityName)
   at HardenWindowsSecurity.WindowsFeatureChecker.CheckWindowsFeatures()
   at HardenWindowsSecurity.ConfirmSystemComplianceMethods.<>c.<VerifyOptionalWindowsFeatures>b__14_0()
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext
executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext
executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at HardenWindowsSecurity.ConfirmSystemComplianceMethods.RunComplianceMethodsInParallelAsync(String[] methodNames)
        Message         : One or more errors occurred. (PowerShell script execution failed: Error: Class not registered
                          Category: NotSpecified
Target:
Script StackTrace: at <ScriptBlock>, <No file>: line 2
Exception Type: System.Runtime.InteropServices.COMException
StackTrace:    at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord))
        TargetSite      :
            Name          : OrchestrateComplianceChecks
            DeclaringType : [HardenWindowsSecurity.ConfirmSystemComplianceMethods]
            MemberType    : Method
            Module        : bfiqgimx.vn5.dll
        InnerException  :
            Type       : System.InvalidOperationException
            TargetSite :
                Name          : ExecuteScript
                DeclaringType : [HardenWindowsSecurity.PowerShellExecutor]
                MemberType    : Method
                Module        : bfiqgimx.vn5.dll
            Message    : PowerShell script execution failed: Error: Class not registered
                         Category: NotSpecified
Target:
Script StackTrace: at <ScriptBlock>, <No file>: line 2
Exception Type: System.Runtime.InteropServices.COMException
StackTrace:    at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)
            Source     : bfiqgimx.vn5
            HResult    : -2146233079
            StackTrace :
   at HardenWindowsSecurity.PowerShellExecutor.ExecuteScript(String script, Boolean returnOutput)
   at HardenWindowsSecurity.WindowsFeatureChecker.GetCapabilityState(String capabilityName)
   at HardenWindowsSecurity.WindowsFeatureChecker.CheckWindowsFeatures()
   at HardenWindowsSecurity.ConfirmSystemComplianceMethods.<>c.<VerifyOptionalWindowsFeatures>b__14_0()
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext
executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext
executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at HardenWindowsSecurity.ConfirmSystemComplianceMethods.RunComplianceMethodsInParallelAsync(String[] methodNames)
        Source          : bfiqgimx.vn5
        HResult         : -2146233088
        StackTrace      :
   at HardenWindowsSecurity.ConfirmSystemComplianceMethods.OrchestrateComplianceChecks(String[] methodNames)
   at HardenWindowsSecurity.InvokeConfirmation.Invoke(String[] Categories)
   at CallSite.Target(Closure, CallSite, Type, Object)
    Source                      : System.Management.Automation
    HResult                     : -2146233087
    StackTrace                  :
   at System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception
exception)
   at System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
   at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
FullyQualifiedErrorId : AggregateException
InvocationInfo        :
    ScriptLineNumber : 158
    OffsetInLine     : 13
    HistoryId        : 1
    ScriptName       : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Core\C
onfirm-SystemCompliance.psm1
    Line             : [HardenWindowsSecurity.InvokeConfirmation]::Invoke($Categories)

    Statement        : [HardenWindowsSecurity.InvokeConfirmation]::Invoke($Categories)
    PositionMessage  : At C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Cor
e\Confirm-SystemCompliance.psm1:158 char:13
                       +             [HardenWindowsSecurity.InvokeConfirmation]::Invoke($Categ …
                       +             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    PSScriptRoot     : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Core
    PSCommandPath    : C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Harden-Windows-Security-Module\0.5.5\Core\C
onfirm-SystemCompliance.psm1
    CommandOrigin    : Internal
ScriptStackTrace      : at Confirm-SystemCompliance<Process>, C:\Users\ayush\OneDrive\Documents\PowerShell\Modules\Hard
en-Windows-Security-Module\0.5.5\Core\Confirm-SystemCompliance.psm1: line 158
                        at <ScriptBlock>, <No file>: line 1

PS C:\Users\ayush>
HotCakeX commented 3 months ago

Not at all, i'm glad you let me know about these errors, but it's all okay, I've found the root cause of all of them and i apologize for letting them slip, i'll explain why

  1. The first problem is caused by an outside program that i didn't use in my environment, for that i will detect if there is an interference with dll load and disable the new notifications experience.
  2. The other error about Confirm-SystemCompliance command is related to a known issue with DISM command in PowerShell installed through Microsoft Store (Not from the MSI version). For that there is a workaround which is offloading the task to Windows PowerShell version of the DISM module.

I've rolled back the version file in the repo root that points to the new version, so that auto updating won't happen, i will release the new version with the fixes very soon.

P.S about the tooltips showing up quickly, I Intentionally made it that way because the default timing was too slow and I wanted users to quickly get the information about each category as they hover over them.

HotCakeX commented 3 months ago

@agpt8 released v0.5.6, please try again and let me know how it goes https://github.com/HotCakeX/Harden-Windows-Security/releases/tag/Hardening-Module-v.0.5.6

agpt8 commented 3 months ago

Everything looks good now! Confirm and Verify list is also populating in the GUI. There are a few observations and suggestions I would like to highlight for the GUI. I'll open a discussion later today for all of those. Thanks for the quick fix!