C# 访问process.MainModule.FileName时出现访问被拒绝异常

C# 访问process.MainModule.FileName时出现访问被拒绝异常,c#,C#,我列出了系统中所有正在运行的进程及其完整路径。我的应用程序在XP中运行良好,但在vista中,它在访问MainModule.FileName时出现拒绝访问异常。(我想是因为UAC) 我没有找到解决UAC问题的办法。有什么线索吗?可能根本不是UAC。您的流程可能是x32,而被查询的流程可能是x64,反之亦然。当发生Win32Exception时,process.MainModule似乎会阻塞,“ReadProcessMemory或WriteProcessMemory请求仅完成了一部分” 是吗?要添

我列出了系统中所有正在运行的进程及其完整路径。我的应用程序在XP中运行良好,但在vista中,它在访问MainModule.FileName时出现拒绝访问异常。(我想是因为UAC)


我没有找到解决UAC问题的办法。有什么线索吗?

可能根本不是UAC。您的流程可能是x32,而被查询的流程可能是x64,反之亦然。当发生Win32Exception时,process.MainModule似乎会阻塞,“ReadProcessMemory或WriteProcessMemory请求仅完成了一部分”


是吗?

要添加到DJA的答案中,Process.main模块正在使用EnumProcessModules API:

如果目标进程中的模块列表已损坏或尚未初始化,或者由于加载或卸载DLL而导致模块列表在函数调用期间发生更改,EnumProcessModule可能会失败或返回错误信息


因此,您可能试图在目标进程不稳定时使用此函数,得到错误的部分拷贝(299)。

23天,没有应答!!!奇怪!!!可能的重复看看日期,我面临的问题可能的重复我今天也有同样的问题。似乎将目标平台设置为任何已为我解决的问题。当目标为x86(使用一些无法在64位模式下工作的32位DLL)且应用程序在x64上运行时,是否有可能克服此问题?
  foreach (Process process in Process.GetProcesses())
{
    sProcess = process.ProcessName;
    sFullpath = process.MainModule.FileName; 
..
..
..
  }