【发布时间】:2018-10-30 09:15:56
【问题描述】:
试图以管理员身份启动位于 System32 中的文件,但它一直告诉我它不存在。
错误:系统找不到指定的文件 构建目标平台是:x86。 当前操作系统:Windows 8.1 x64。对于 32 位和 64 位操作系统,我宁愿没有 2 个不同的 .exe。
p.StartInfo.Verb = "runas";
p.StartInfo.FileName =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System),"Defrag.exe");
//above points to c:\windows\system32\defrag.exe
p.StartInfo.Arguments = @"c:\ /A";
p.Start();
p.WaitForExit();
我也尝试了以下没有运气
p.StartInfo.FileName =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "sysnative", "Defrag.exe");
更新
将应用程序从 x86 切换到任何 CPU 更正了问题
【问题讨论】:
-
请(总是)显示完整的异常(ex.ToString())。
-
您是否运行在 64 位版本的 Windows 7/8 上?如果是这样,请尝试从 Any CPU 将构建目标设置为 64 位。 Windows 使用 sysnative 做了一些奇怪的事情。我们“认为”的某些文件在 System32 中,但实际上并非如此,因为 Windows 不知道我们指的是哪个版本的文件。 sysnative,或替代。
-
如果您从 bin\Debug(或 bin\Release)文件夹运行 .exe 并右键单击 ->“以管理员身份运行”,会发生什么情况。我想这可能是权限问题?
-
@SeanThoman 仍然找不到文件,动词 runas 应该以管理员身份启动 defrag.exe。
-
@DarkBobG 当前操作系统是 8 x64,但构建设置为 x86,因为我希望它是这样的,所以我没有 x86 和 x64 的构建。
标签: c#