1

我有 C# 可执行文件,我想在 Windows 7 上启动而没有对话框要求以管理员身份运行。所以这是我在启动名为 testApp.exe 的 C# 可执行文件的程序中的代码。

Process testApp = new Process();
testApp.StartInfo.FileName = "C:\\Program Files\\Common Files\\testApp.exe";
testApp.Start();

我还为这两个程序创建了 minfest。testApp.exe 的 app.manifest 和启动 testApp.exe 的程序的 app.manifest,然后我将两个清单中的以下行更改为:

requestedExecutionLevel 级别="requireAdministrator" uiAccess="false"

当我双击 testApp.exe 运行它时,testApp.exe 程序崩溃了,但是当我以管理员身份运行它时,它运行良好,没有崩溃。因此,当我运行启动 testApp.exe 的程序时,这种行为也会发生相同的情况,testApp.exe 崩溃。

我必须在这里做错事。我是否需要更改清单的名称,因为我使用的是由 Visual Studio 2010 生成的默认名称。

谢谢。

4

3 回答 3

2

实际上你应该只使用

requestedExecutionLevel 级别="requireAdministrator" uiAccess="false"

仅当您想以管理员身份运行时。

将其更改为:

requestedExecutionLevel 级别="asInvoker" uiAccess="false"

你会很高兴去的。

于 2012-09-23T09:12:57.027 回答
0

使用 info.Verb = "runas"; // 提供以管理员身份运行

于 2014-03-26T12:22:29.313 回答
0

我的 50 美分,

而不是添加 requestedExecutionLevel level="asInvoker" uiAccess="false"清单,您可以使用任务调度程序以最高级别运行几乎任何东西(管理员模式)

来源:http ://www.liberalcode.com/2014/01/automating-run-as-administrator-from-c.html

虽然上面的帖子谈到了远程运行它,但是您可以轻松地将其更改为在本地运行。

于 2014-04-16T18:29:54.230 回答