c# - "only part of a readprocessmemory or writeprocessmemory request was completed"process.start 期间

标签 c# process process.start

<分区>

Possible Duplicate:
C# Only part of a ReadProcessMemory or WriteProcessMemory request was completed during Process.Kill()

我正在尝试从当前流程中启动一个新流程。我正在使用 processInfo 和 process.start 来执行此操作。新进程应该运行我之前构建的 exe,将其称为 newProc.exe,它可以从 cmd 行正常运行。

调用exe的代码

class Program
    {
        static void Main(string[] args)
        {
            StartNewProc();
        }

        public static void StartNewProc()
        {
            string pathToNewProc = @"c:\path\to\newproc.exe";

            ProcessStartInfo processInfo = new ProcessStartInfo();
            processInfo.FileName = pathToNewProc;
            processInfo.Arguments = "Some cmd line argument";
            processInfo.CreateNoWindow = false;
            processInfo.WindowStyle = ProcessWindowStyle.Hidden;

            Process proc = Process.Start(processInfo);
            proc.WaitForExit();
        }
    }

当我在 visual studio 调试器中或从 cmd 行运行它时,newProc.exe 没有启动。在调试器中查看它,如果我在 Process.Start 之后查看“proc”,我可以看到 MainModule 成员中抛出了一个异常。异常消息是“只完成了 ReadProcessMemory 或 WriteProcessMemory 请求的一部分”。

深入了解该异常的堆栈跟踪

System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly) at System.Diagnostics.Process.get_MainModule()

一些针对 32 位与 64 位问题的异常点的研究。这两个 exe,newProc exe 和调用 exe 的代码都是 64 位应用程序。我通过应用程序属性和任务管理器进行了检查(寻找“*32”标签)。我尝试在 visual studio 中将平台设置为 x64 和 Any CPU,但没有成功。

关于为什么 Process.Start 在这些条件下无法读取的任何想法?

注意:这是在 Win7 64 位上。两个 exe 都是 C# 应用程序。两者都在使用 2.0 框架(老我知道但必要)。

最佳答案

我想通了。问题完全出在我的 newProc 应用程序中。由于 args.Len 检查,它提前退出。返回的异常只是具有误导性,让我有点不知所措。

关于c# - "only part of a readprocessmemory or writeprocessmemory request was completed"process.start 期间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13612212/

相关文章:

c# - 具有网格布局的自定义 ItemsControl

java.lang.Thread.setPriority 与 android.os.Process.setThreadPriority

php - Windows 中使用 PHP 的应用程序线程

c# - Process.Start cmd.exe 不会运行在 IIS 中运行时作为参数传递的 cmd 文件

c# - 如何禁用下载提示,如 'do you want to open or save or save_as?'

c# - 如果为空,WeakReference.Target.GetType 是否失败

C# 版本的 OpenSSL EVP_BytesToKey 方法?

c# - 为什么编译器不对静态表达式树使用相同的对象引用?

linux - 如何在没有任何外部硬件仪表的情况下测量 linux 中进程的能耗?

c# - Process.Start 很慢