2011-11-04 42 views
0

我得到一个非常讨厌的例外:Win32异常

型 “System.ComponentModel.Win32Exception”发生在System.dll中的第一次机会异常。

尝试每一个谷歌的东西,但徒劳。

foreach (Process p in Process.GetProcesses(Environment.MachineName)) 
{ 
    try 
    { 
     foreach (ProcessModule pm in p.Modules) 
     { 
      FileIOPermission f = new FileIOPermission(FileIOPermissionAccess.Read, pm.FileName); 

      stack.Push(pm.FileName.ToString());  
     } 
    } 
    catch (Win32Exception w) 
    { 
     Console.Write(w); 
    } 
} 
+0

请修正您的代码,以便整个块被标记,并告诉我们什么是例外文本。 – drdwilcox

+0

如果您提供一些背景,它也可能有所帮助。你的目标是什么? – Polynomial

回答

1

您正尝试打开系统上每个进程中每个模块的句柄。您不但没有权限执行此操作,还无法枚举System进程的模块(即内核)。

你应该简单地跳过那些你无法访问的,因为无论如何你都无法对它们做任何事情。

+0

@ Polynomial:Buddy我正在尝试构建一个Antivirus(我知道一件很重要的事情),并且使用这个我包括扫描dll进程文件的rootkit扫描功能。任何帮助? –

+0

我比C#中的一个AV项目有多大,我知道的更好,因为我自己写了一个用于我的大学最终项目。做AV有用的唯一真正方法是用C语言编写内核模式驱动程序,并使用互斥体,DeviceIoControl和AllocHGlobal与C#引擎进行交互。在用户模式下检查钩子和注入的DLL只会导致失败。在用户模式下,您仅限于Win32 API允许您执行的操作,因此您面临与用户模式恶意软件相同的限制。在内核模式下,你并不局限于任何东西。 – Polynomial