【发布时间】:2018-02-14 17:34:00
【问题描述】:
我正在尝试在我的 C# WinForm 应用程序中创建一个快捷方式,以便用户启动 Microsoft 的“数字化仪监控映射工具”(MultiDigiMon.exe)。但是,即使以管理员身份运行,我的应用程序或从它启动的 cmd 进程似乎也找不到有问题的可执行文件,我也不知道为什么。
我的快捷方式由一个简单的按钮组成,单击事件与休闲功能挂钩。
private void TouchButton_Click(object sender, EventArgs e)
{
ProcessStartInfo start = new ProcessStartInfo("C:\\Windows\\System32\\cmd.exe");
start.WorkingDirectory = "C:\\Windows\\System32";
start.CreateNoWindow = false;
start.UseShellExecute = false;
//start.Arguments = "/K \"cd C:\\Windows\\System32 && MultiDigiMon.exe -touch\"";
Process.Start(start);
}
根据我在 Win10 系统上的经验,MultiDigiMon.exe 始终可以在 C:\Windows\System32 中找到(假设 C 驱动器是您的根目录)。此外,上面的参数行已被注释掉,以使以下屏幕截图尽可能相同。
左侧是使用上述代码启动的命令提示符,右侧是通过在操作系统的任务栏中键入 cmd 并以管理员身份运行第一个结果来启动的命令提示符。如您所见,两个提示都标记为管理员,但左侧无法启动 MultiDigiMon.exe,甚至不会使用 dir 命令列出存在的文件。权利似乎对任何一个命令都没有问题。 (如果没有连接多个触摸屏设备,MultiDigiMon.exe 似乎根本没有做任何事情,而且我不相信它会提供任何文本输出,尤其是在成功的情况下)。
最后,我还检查了 MultiDigiMon.exe 的权限,并且(完全控制的 TrustedInstaller 除外)每个人都具有读取和执行权限。有人可以解释为什么我不能从左侧提示或直接从我的应用程序启动 MultiDigimon.exe 吗?
【问题讨论】:
-
左图显示
syswow64文件夹和右图-system32。这与提升无关,但与 32 位应用程序的 fs 重定向有关 -
现在我只是觉得很愚蠢。很可能就是这样。谢谢。现在我只需要弄清楚如何在我的快捷方式中颠覆重定向。