0

我有以下代码:

        // Creating procesStartInfo obj
        System.Diagnostics.ProcessStartInfo procStartInfo
            = new System.Diagnostics.ProcessStartInfo();

        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;

        // Do not create the black window.
        procStartInfo.CreateNoWindow = true;

        //Window state hidden .. so black windows will come inbetween
        procStartInfo.WindowStyle
            = System.Diagnostics.ProcessWindowStyle.Hidden;

        // Creating Process obj to run the net time cmd
        System.Diagnostics.Process p;
        string output;
        p = new System.Diagnostics.Process();

        p.StartInfo = procStartInfo;
        p.StartInfo.FileName = "w32tm";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;

        p.StartInfo.Arguments = " /resync /computer:xxxxx977";
        p.Start();
        p.WaitForExit();

        output = p.StandardOutput.ReadLine().ToString();
        MessageBox.Show(output);

当我执行此代码时,我收到一条错误消息:

发生以下错误:找不到指定的模块。(0x8007007E)。

如果我远程或本地运行命令w32tm /resync /computer:xxxxx977,它工作正常。为什么在使用代码而不是从命令行启动进程时会出现此错误?

4

2 回答 2

0

尝试使用

procStartInfo.UseShellExecute = true;

您没有指定在哪里可以找到“w32tm”,因此可能找不到该文件。我认为您必须提供完整路径和它的扩展名,否则 UseShellExecute。

顺便说一句:某些属性在您的代码中设置了两次。;-)

于 2013-02-04T08:25:21.370 回答
0

使用该DependencyWalker工具找出哪些模块丢失并且在搜索 PATH 中找不到。UseShellExecute设置为 true可能会有所帮助。您将其设置为 false 的原因是什么?

于 2013-02-04T08:36:12.853 回答