4

我有这个代码:

 Process myProcess = new Process();

 myProcess.StartInfo.UseShellExecute = true;
 myProcess.StartInfo.FileName = "rdpclip.exe";
 myProcess.Start();

启动位于 system32 中的 exe 文件

我总是得到一个错误,找不到系统文件。在 Windows 2008 服务器中。

即使我设置了 StartupInfo.FileName="c:\\windows\\system32\\rdpclip.exe" 它仍然找不到文件!?

如果我将文件放在其他文件夹中,它可以工作,但在 System32 中它不会启动。我只需要杀死这个进程并重新开始,但我从没想过在C#中做这么简单的事情会如此痛苦?!

4

2 回答 2

4

此错误具有误导性,因为它通常意味着您没有对该文件夹的权限。尝试构建您的程序,然后右键单击生成的 .exe 并单击“以管理员身份运行”。

于 2012-11-24T06:33:56.847 回答
4

试试这个(你需要导入 System.Runtime.InteropServices):

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);

IntPtr ptr = IntPtr.Zero;
if(Wow64DisableWow64FsRedirection(ref ptr))
{
    Process myProcess = new Process();
    myProcess.StartInfo.UseShellExecute = true;
    myProcess.StartInfo.FileName = "rdpclip.exe";
    myProcess.Start();
    Process.Start(myProcess);
    Wow64RevertWow64FsRedirection(ptr);    
}
于 2013-02-22T14:14:02.027 回答