我的Vista应用程序需要知道用户是"以管理员"(提升)还是以标准用户(非提升)方式启动它.我怎样才能在运行时检测到它?
我知道有一些类似的问题.但我只想检查一件事.
我只想知道程序是否以管理员身份运行.我想检查一下,因为我想编辑一些安全文件.用户不必是管理员.我只想知道我的应用程序是否有权编辑一些在以管理员身份运行时可编辑的安全文件.
可能重复:
如何判断我的进程是否以管理员身份运行?
如果我的进程作为本地管理员运行,我如何使用C#进行检查?
我知道如何确定当前用户是否是内置管理员组的成员.但这不是我想知道的.我想知道当前用户是否是(唯一的)特殊本地管理员帐户.
我也知道如何检索当前用户的名称,但我不想将其与硬编码名称"Administrator"进行比较,因为这不适用于Windows的本地化版本(例如西班牙语中的"Administrador","Administrateur")用法语等).
我可以使用Environment.UserName并将其与'系统'进行比较,看它是否匹配,但这看起来很糟糕,我不确定它在非英语环境中是如何工作的.有关如何检查当前可执行文件是否作为系统帐户运行的任何其他建议?
我们有一个运行MSBuild脚本的安装程序,该脚本在本地计算机帐户的Personal/My证书库中导入自签名证书.我在运行安装程序的服务器上的Administrators组中,并且未启用UAC .当我运行我的脚本并导入证书时,我无法在IIS中使用它.当我尝试将其分配给网站时,Process Monitor显示访问被拒绝的错误.
但是,当我以管理员身份显式运行脚本时(右键单击并选择"以管理员身份运行"),证书将成功导入,我可以在IIS中使用它.这对我来说非常奇怪.
如何判断我的脚本/程序是否以管理员身份运行? 如果检测到它没有以这种奇怪的"以管理员身份运行"权限运行,我想在安装脚本中添加一个检查失败的检查.我更喜欢C#/ .NET中的答案.
我尝试使用GetTokenInformation,获取高程类型,但只有在启用UAC时才有效.
System.Security.Principal.WindowsIdentity.IsInRole(WindowsBuiltInRole.Administrator)在常规和"提升"提示中使用return true.
我已经比较了所公开的所有者,用户和组SIDS System.Security.Principal.WindowsIdentity.GetCurrent,并且该列表在常规和"提升"提示中是相同的.
如何检查我的C++程序是否以管理员权限运行?
我是以这种方式批量做的
set fold=%random%
mkdir "C:\Windows\%fold%"
if errorlevel 1 (
goto Tag1
)
goto Tag2
Run Code Online (Sandbox Code Playgroud)
但我不能对C++使用相同的东西,因为我不知道如何将变量1的%random%的值传递给%fold%的变量2,而且,我不知道C++是否存在错误级别.
在这种情况下,任何人都可以帮助我,或者有没有办法检查我的程序是否以管理员权限运行?