可能重复:
C# 在 Process.Kill() 期间仅完成了 ReadProcessMemory 或 WriteProcessMemory 请求的一部分
我正在尝试从我当前的流程中启动一个新流程。我正在使用 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 请求的一部分”。
深入了解该异常的 stackTrace
System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly) 在 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 框架(我知道但有必要)。