ManagedSpy icon indicating copy to clipboard operation
ManagedSpy copied to clipboard

Access denied error while running as Administrator

Open Stonica opened this issue 3 years ago • 4 comments

I have run the x86 released exe as administrator and got:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ComponentModel.Win32Exception (0x80004005): Access is denied
   at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
   at System.Diagnostics.ProcessManager.GetModuleInfos(Int32 processId)
   at System.Diagnostics.Process.get_Modules()
   at Microsoft.ManagedSpy.Desktop.IsManagedProcess(UInt32 processID) in d:\x-files\projects\managedspy\managedspylib\commands.cpp:line 114
   at Microsoft.ManagedSpy.Desktop.GetProxy(IntPtr windowHandle) in d:\x-files\projects\managedspy\managedspylib\commands.cpp:line 166
   at EnumCallback(HWND__* handle, Int32 arg) in d:\x-files\projects\managedspy\managedspylib\commands.cpp:line 60
   at EnumWindows(IntPtr , Int32 )
   at Microsoft.ManagedSpy.Desktop.GetTopLevelWindows() in d:\x-files\projects\managedspy\managedspylib\commands.cpp:line 67
   at ManagedSpy.MainForm.RefreshWindows() in D:\X-Files\Projects\ManagedSpy\ManagedSpy\MainForm.cs:line 45
   at ManagedSpy.MainForm.MainForm_Load(Object sender, EventArgs e) in D:\X-Files\Projects\ManagedSpy\ManagedSpy\MainForm.cs:line 33
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4341.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
ManagedSpy
    Assembly Version: 1.2.2.0
    Win32 Version: 1.2.2.0
    CodeBase: file:///C:/Users/Kevin/Downloads/ManagedSpy_x86_1.2.2/ManagedSpy.exe
----------------------------------------
ManagedSpyLib
    Assembly Version: 1.2.2.0
    Win32 Version: 
    CodeBase: file:///C:/Users/Kevin/Downloads/ManagedSpy_x86_1.2.2/ManagedSpyLib.DLL
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4341.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4300.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4190.0 built by: NET48REL1LAST_B
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4341.0 built by: NET48REL1LAST_C
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Accessibility
    Assembly Version: 4.0.0.0
    Win32 Version: 4.8.4084.0 built by: NET48REL1
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


Stonica avatar Apr 15 '21 16:04 Stonica

I have the same problem. I'm assuming there are only some processes that can cause this error, maybe system process or such, could you update it so that a process that's inaccessible is just skipped instead of crashing the whole program?

CherryDT avatar Sep 13 '22 12:09 CherryDT

Well, I was able to reproduce the "Access denied" issue and even fix it, but I have to admit that the program doesn't really work for me anymore (after the start, if just sits there consuming 33 MiB of memory, no windows and no anything is shown, no exceptions either) :(

You're free to pick up the fix from the branch bugfix/23.access-denied, and see if you can make it work 😅

ForNeVeR avatar Sep 13 '22 19:09 ForNeVeR

Well, it works, but it is very, very slow in both refreshing the internal top level window list and the UI, and the control proxy list has 958 entries...

I only need this to look at one specific process - I don't really know C++/CLI, could you help me adding something super basic that would allow me to specify a process ID in the command line and then if one is given you would do GetWindowThreadProcessId in EnumCallback and only call Desktop::topLevelWindows->Add(Desktop::GetProxy((System::IntPtr)handle)); if the PID matches?

CherryDT avatar Sep 14 '22 14:09 CherryDT

Try this dirty hack I did (pushed to the same branch).

ForNeVeR avatar Sep 14 '22 19:09 ForNeVeR