32位进程无法在c#中访问64位进程的模块,以查找进程中的模块

时间:2017-05-27 18:48:05

标签: c#

我仍然有点新的c#,但我有一个小问题,我试图在一个过程中寻找一个模块,以便在一个进程列表中过滤它...例如,如果我得到一个列表chrome进程,并希望过滤掉当前运行flash player的那些.. 这是我的示例代码:

  Process[] myProcess = null;


        foreach (Process localAll in Process.GetProcesses())
        {
            try
            {
                if (localAll.ProcessName.Contains(processName))
                {

                    myProcess = Process.GetProcessesByName(localAll.ProcessName);

                }
            }
            catch { }
        }
        Process[] processList;



        if (myProcess.Any())

        {
            if (moduleName != null)

            {

                processList = myProcess
              .Where(process => process.Modules.OfType<ProcessModule>()
                .Any(module => module.ModuleName.Contains(moduleName))).ToArray();
                }
            else
            {
                processList = myProcess;
            }
            if (!processList.Any())
            {
                return;
            }

因为我还是新手,我可能还有一些错误要修复,但我的主要问题是:&#34; 32位进程无法访问64位进程的模块&#34;在运行测试应用程序并输入所需信息时。 问候 ==编辑

  抛出异常:

     

发生了System.ComponentModel.Win32Exception   的HResult = 0x80004005的   消息= 32位进程无法访问64位进程的模块。   来源=系统    堆栈跟踪:     在System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId,&gt; Boolean firstModuleOnly)     在System.Diagnostics.ProcessManager.GetModuleInfos(Int32 processId)     在System.Diagnostics.Process.get_Modules()     在ModuleTester.ProcessBox2。&lt;&gt; c__DisplayClass23_0。&lt; .ctor&gt; b__0(进程&gt;进程)在C:\ Users \ Ludwig \ Desktop \ ModuleTester - Copy \ ModuleTester \ ProcessBox2.cs:第63行     在System.Linq.Enumerable.WhereArrayIterator 1.MoveNext() at System.Linq.Buffer 1..ctor(IEnumerable 1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable 1来源)     在ModuleTester.ProcessBox2..ctor(String processName,String moduleName,&gt; String testAob,UInt32 PiDd)中的C:\ Users \ Ludwig \ Desktop \ ModuleTester - &gt; Copy \ ModuleTester \ ProcessBox2.cs:第62行     at ModuleTester.Program.MProces(String process,String aob,String&gt; module,UInt32 ppid,String t_aob)在C:\ Users \ Ludwig \ Desktop \ ModuleTester - &gt; Copy \ ModuleTester \ Program.cs:第35行     at ModuleTester.Program.Main(String [] args)在C:\ Users \ Ludwig \ Desktop&gt; \ ModuleTester - Copy \ ModuleTester \ Program.cs:第27行

0 个答案:

没有答案