如何使一个控制台应用程序始终以管理员身份运行?(How do I make a console ap

2019-08-17 14:09发布

我有一个发展到由ERP软件被称为控制台应用程序。

他们叫我的应用程序在ERP里面,当他们这样做,我总是得到相关许可不足以做到这一点的错误。

我已经检查了“运行此程序作为管理员”复选框中的exe为所有用户的属性,但结果是一样的。

我读过一些关于增加一个清单,这将使UAC对话框的应用程序的提示,但是那不是我想要的,因为应用程序会从服务器和客户机上ERP被称为将看不到服务器的对话框。

有人能解释我如何使始终以管理员身份运行此控制台应用程序?

Answer 1:

首先,要明白会有在这个过程中的一些点UAC对话框。 有没有办法避免。 还有,你可以采取一些方法:

  • 有人民运行高架ERP软件。 我包括这只是为了保持完整性。 这是可怕不得不同意UAC提示每次运行应用程序时,你通常不需要权力的时间。 这将是一个方便的快速测试,不过,您确认,如果您的应用程序升高,事情很快就会过去。 从提升的进程中启动一切都在升高,因此,如果您的应用程序仍然得到错误信息,这是不是你会通过提高解决。
  • 更改ERP应用程序的代码,以启动您的应用程序提升。 你提到C#。 与启动runas动词是这里的一种方法。 这给ERP开发者的负担,他们可能无法做到这一点。
  • 添加一个清单给你的应用程序。 您可以嵌入一个,或者如果您的应用程序被称为foo.exe的不仅仅是手创建具有相应requestedExecutionLevel一个foo.exe.manifest文件。 要嵌入一个使用C#项目的属性页选择正确的舱单。 确保你发起了UseShellExecute设置为true,或清单将被忽略。

如果你选择第一个选项,UAC提示会在每次ERP应用程序启动时间。 不好。 如果选择第二或第三,UAC提示将每次你的控制台应用程序从ERP应用程序启动时间。 也许可以接受的。

你可以考虑的另一件事是寻找更认真了为什么控制台应用程序需要管理员PRIVS。 你写的C或程序文件的根? 是否要更新在HKLM注册表项? 无论你做什么,你为什么做这样的说法? 除非你的应用程序安装或配置的东西(在这种情况下,得到一个UAC提示是好的,正确的),你应该尽量去适应它,这样它写入预先存储的用户,不需要提升。 然后,你将不再担心如何启动它升高,在任何情况下。



Answer 2:

添加到您的项目应用程序清单文件(添加 - >新建项目 - >常规 - >应用程序清单文件),并添加下面的节点进入app.manifest:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx



Answer 3:

创建一个包含类似于一个批处理文件:

runas /env /user:%USERDOMAIN%\%USERNAME% cmd.exe /K YourProgramName.exe

其中,%USERDOMAIN%和%USERNAME%是由您的管理员帐户的细节所取代。

并运行呢?



文章来源: How do I make a console app always run as an administrator?