[英]How do I make a console app always run as an administrator?
我有一个开发的控制台应用程序,由erp软件调用。
他们在erp中调用我的应用程序,当他们这样做时,我总是会遇到与执行权限不足相关的错误。
我已经检查了所有用户的exe属性中的“以管理员身份运行此程序”复选框,但结果是相同的。
我已经阅读了一些关于添加清单的内容,该清单将为uac对话框提供应用程序提示,但这不是我想要的,因为应用程序将从服务器上的erp调用,客户端将无法在服务器上看到对话框。
有人可以解释我如何让这个控制台应用程序始终以管理员身份运行?
添加到项目Application Manifest File(Add - > New Item - > General - > Application Manifest File)并将以下节点添加到app.manifest:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx
首先,要了解在此过程中的某个时刻将会有一个UAC对话框。 没有办法避免它。 您可以采取以下几种方法:
runas
动词启动是一种方法。 这给ERP开发人员带来了负担,他们可能无法做到这一点。 UseShellExecute
设置为true的情况下启动,否则将忽略清单。 如果您选择第一个选项,则每次启动ERP应用程序时都会显示UAC提示。 不好。 如果您选择第二个或第三个,则每次从ERP应用程序启动控制台应用程序时都会出现UAC提示。 可能是可以接受的。
您可能会考虑的另一件事是更加认真地了解为什么控制台应用程序需要管理员权限。 您是在写C的根目录还是编写文件? 您是否在HKLM更新注册表项? 无论你在做什么,为什么这样做呢? 除非您的应用程序安装或配置某些内容(在这种情况下获得UAC提示是正确的),您应该尝试对其进行调整,以便它写入用户前存储并且不需要提升。 然后,无论如何,你将不再担心如何将其升高。
创建包含以下内容的批处理文件:
runas /env /user:%USERDOMAIN%\%USERNAME% cmd.exe /K YourProgramName.exe
其中%USERDOMAIN%和%USERNAME%被您的管理员帐户详细信息替换。
然后运行它?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.