【发布时间】:2014-03-21 20:14:36
【问题描述】:
我有一个文件MyUtilities.exe。
当我跑步时:
Process.Start("MyUtilities.exe","SomeParameter");
如果该进程在没有管理员权限的情况下运行,则该进程的退出代码为 0(OK)。如果我以管理员身份运行该代码,则退出代码为 1!
由于我没有创建 MyUtilities.exe 我无法修改它。
最后我需要以管理员身份运行 Process.Start("MyUtilities.exe","SomeParameter"); 并让它返回退出代码 = 0。我设法做到这一点的方法是将其兼容性更改为:
(右键文件->属性->兼容性->以管理员身份运行此程序)
更改后,我现在可以以管理员身份运行 Process.Start("MyUtilities.exe","SomeParameter"); 并让它返回退出代码 0。
所以我的问题是如何更改该文件的兼容性与代码,这样我就不必告诉用户右键单击文件然后更改设置。
【问题讨论】:
-
这里有什么帮助吗? stackoverflow.com/questions/2532769/…
-
是否必须直接调用MyUtilities.exe?是否可以选择调用 MyUtilities.exe 的 MyUtilitiesStarter.exe?
-
我不明白。你想启动其他进程提升还是不提升。
-
我不介意它是否被称为提升。我所关心的是退出代码为 0。如果我以非管理员身份运行我的 c# 代码,那么如果该 exe 也以非管理员身份运行,则退出代码为 0。如果我以管理员身份运行我的 c# 代码,那么 myUtilities.exe 也必须以管理员身份运行才能获得退出代码 = 0。换句话说,c# 和 myUtilites 必须以相同的权限运行才能获得退出代码 = 0。因为我的 c# 代码将以管理员身份运行,所以我想答案是肯定的,我也需要 myUtilities.exe 以管理员权限运行。
-
您的分析有缺陷。当提升的进程启动另一个进程时,该子进程运行提升。您确实需要诊断问题。
标签: c# process compatibility privileges