我有一个发展到由ERP软件被称为控制台应用程序。
他们叫我的应用程序在ERP里面,当他们这样做,我总是得到相关许可不足以做到这一点的错误。
我已经检查了“运行此程序作为管理员”复选框中的exe为所有用户的属性,但结果是一样的。
我读过一些关于增加一个清单,这将使UAC对话框的应用程序的提示,但是那不是我想要的,因为应用程序会从服务器和客户机上ERP被称为将看不到服务器的对话框。
有人能解释我如何使始终以管理员身份运行此控制台应用程序?
我有一个发展到由ERP软件被称为控制台应用程序。
他们叫我的应用程序在ERP里面,当他们这样做,我总是得到相关许可不足以做到这一点的错误。
我已经检查了“运行此程序作为管理员”复选框中的exe为所有用户的属性,但结果是一样的。
我读过一些关于增加一个清单,这将使UAC对话框的应用程序的提示,但是那不是我想要的,因为应用程序会从服务器和客户机上ERP被称为将看不到服务器的对话框。
有人能解释我如何使始终以管理员身份运行此控制台应用程序?
首先,要明白会有在这个过程中的一些点UAC对话框。 有没有办法避免。 还有,你可以采取一些方法:
runas
动词是这里的一种方法。 这给ERP开发者的负担,他们可能无法做到这一点。 UseShellExecute
设置为true,或清单将被忽略。 如果你选择第一个选项,UAC提示会在每次ERP应用程序启动时间。 不好。 如果选择第二或第三,UAC提示将每次你的控制台应用程序从ERP应用程序启动时间。 也许可以接受的。
你可以考虑的另一件事是寻找更认真了为什么控制台应用程序需要管理员PRIVS。 你写的C或程序文件的根? 是否要更新在HKLM注册表项? 无论你做什么,你为什么做这样的说法? 除非你的应用程序安装或配置的东西(在这种情况下,得到一个UAC提示是好的,正确的),你应该尽量去适应它,这样它写入预先存储的用户,不需要提升。 然后,你将不再担心如何启动它升高,在任何情况下。
添加到您的项目应用程序清单文件(添加 - >新建项目 - >常规 - >应用程序清单文件),并添加下面的节点进入app.manifest:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx
创建一个包含类似于一个批处理文件:
runas /env /user:%USERDOMAIN%\%USERNAME% cmd.exe /K YourProgramName.exe
其中,%USERDOMAIN%和%USERNAME%是由您的管理员帐户的细节所取代。
并运行呢?