C# 无法启动系统 EXE 进程

4

I have this code:

 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#中做这样一个简单的事情是如此痛苦?!


2
你的应用程序是32位的吗?你的操作系统是64位的吗?我注意到rdpclip.exe在C:\windows\system32中,而不在c:\windows\syswow64中(当以32位应用程序运行时,这是映射到system32的文件夹)。 - akhisp
这是一个64位操作系统,但rdpclip.exe文件在system32文件夹中。 - Mario
2个回答

4

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


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);    
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接