Server 2008中无法设置用户权限
-
27-09-2019 - |
题
我试图做在C#3.5的一些东西的Win32得到提升的用户权限的控制台应用程序。我上的Visual Studio 2008 SP1 / GDR和东西做工精细开发时,调试器下运行。事情也做工精细,当我运行控制台应用程序的独立。当我一切都打包成一个MSI和2003年的服务器上安装并运行控制台应用程序的事情也运行正常。
如果我采取相同的MSI和2008服务器启用UAC上安装它,然后运行控制台应用程序,我得到的消息是这样的:
Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException Attempted to perform an unauthorized operation.
我不希望我的部署/服务器管理员比安装其他的我的应用程序做任何事情,他们不会关闭UAC。必须有一些编程的方式来正确设置用户权限,我可以添加到控制台应用程序 - ?任何人都知道如何
感谢。
解决方案
也许你使用 “全球\” 前缀一>在应用程序和应用程序中的对象名称将远程桌面会话主机(RD会话主机)服务器会话内启动。在这种情况下你的程序必须启用 SE_CREATE_GLOBAL_NAME (SeCreateGlobalPrivilege
)权限。请参见 C# - 如何启用SeDebugPrivilege (但使用SE_CREATE_GLOBAL_NAME
的呢? SE_DEBUG_NAME
)或托管代码中可靠操纵权限,安全地,且有效地作为一个例子。
其他提示
我认为UAC是2008年的计算机上启用,我还不能在你的问题找出来。
如果这样,确保在VS您app.manifest文件(下属性),变化
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
到
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
即使代码以管理员身份运行,必须由UAC警告就搞定了。
不隶属于 StackOverflow