<分区>
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 框架(老我知道但必要)。