首页 > 解决方案 > Process.Start 找不到可执行文件

问题描述

我想从我的 .NET 应用程序中更改 BCD。为此,我创建了这个小片段:

static void RunBcdEdit() 
{
    Process process = new Process();
    process.StartInfo.FileName = "c:\\Windows\\System32\\bcdedit.exe";
    process.StartInfo.UseShellExecute = false;        
    process.WaitForExit();
}

奇怪的是它抛出了一个异常说

系统找不到指定的文件

这有什么问题?

标签: c#.netprocess.start

解决方案


在 System32 之外运行应用程序时,我遇到了类似的问题。我发现的一种解决方法是使用 SysNative。在测试中,System32 何时可以工作或 SysNative 何时可以为驻留在 System32 中的不同应用程序工作并没有一致性。

static void RunBcdEdit() 
{
    Process process = new Process();
    process.StartInfo.FileName = "c:\\Windows\\SysNative\\bcdedit.exe";
    process.StartInfo.UseShellExecute = false;        
    process.WaitForExit();
}

推荐阅读