【发布时间】:2020-04-01 06:50:29
【问题描述】:
注意:我的计算机上启用了 Windows 沙盒。
Console.WriteLine(File.Exists(@"C:\Windows\system32\WindowsSandbox.exe"));
Console.WriteLine(new FileInfo(@"C:\Windows\system32\WindowsSandbox.exe").Exists);
在C# Interactive中运行上述代码(VS不在管理员模式):
True
True
但是,当我在控制台应用程序中运行它时, (管理员模式和非管理员模式)。结果总是假的。
False
False
我试过Process.Start(@"C:\Windows\system32\WindowsSandbox.exe"),
控制台应用程序失败(管理员和非管理员),但 C# 交互成功。
在 powershell 中,C:\Windows\system32\WindowsSandbox.exe 成功启动了 Windows 沙盒。
在资源管理器(system32 文件夹)中:
image
谁能解释为什么会发生这种情况?
【问题讨论】:
-
Window Sandbox 是否设置为运行管理员?
-
我假设您使用的是 64 位 Windows?如果有,您是否有
C:\Windows\SysWOW64\WindowsSandbox.exe并且控制台应用程序是针对 32 位的? -
将 processStartInfo.Verb 设置为 "runas" 没有解决问题。@jdwengspan>
-
我使用的是64位windows,但是资源管理器的SysWOW64中没有WindowsSandbox.exe。@BACON
-
在 64 位 Windows 上,除非您特意运行 32 位版本,否则资源管理器和 PowerShell 将是 64 位进程,因此将从 64-位系统目录,
system32。如果您的应用程序是 32 位的,它会将您指定的路径重定向到 32 位系统目录SysWOW64。尝试将您的路径从WindowsSandbox.exe更改为calc.exe或notepad.exe,这两者在system32和SysWOW64中都肯定存在,看看它是否有效。我怀疑会的。
标签: c# .net windows windows-sandbox