我正在用c ++ / c编写一个应用程序。如何检测进程是否以管理员身份启动(右键单击以管理员身份运行)?
答案 0 :(得分:2)
假设问题陈述是"如何确定我的流程是否在UAC"下被提升,
library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQL Server};server=mysqlhost;database=mydbname;trusted_connection=true')
# Main table query works well
res <- sqlQuery(dbhandle, 'select * from Main')
# I would like to filter it by date column
res <- sqlQuery(dbhandle, 'select * from Main where Date > '2010-01-01'')
是否返回true IsUserAnAdmin()
如果所有三项测试均属实,则您的流程在UAC下已经提升。请注意,TokenElevationTypeFull
检查本身就足够了,但在我们自己的代码中,如果将来还有其他类型的拆分令牌,我们会执行其他操作。
<强>详细信息:强>
可能还有其他方法可以做到这一点,但最简单的方法是查看注册表。如果注册表项GetProcessElevationType
下存在值EnableLUA
,则启用UAC。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
是否返回true 这很简单 - 只需调用IsUserAnAdmin()
函数即可。请注意,不推荐使用此函数;您也可以使用IsUserAnAdmin()
功能。
CheckTokenMembership()
您可以使用以下功能获取令牌的提升类型:
TokenElevationTypeFull