如何检查进程是否具有管理权限

Vit*_*aly 21 c++ winapi

如何正确检查进程是否以管理权限运行?

IsUserAnAdim在MSDN中检查了该功能,但不推荐使用它,因为它可能在后续版本的Windows中被更改或不可用.相反,建议使用该CheckTokenMembership功能.

然后我从CheckTokenMembership功能描述中查看了MSDN中的替代示例.但是,Stefan Ozminski在MSDN中的评论提到,如果禁用UAC,此示例在Windows Vista中无法正常工作.

最后,我尝试使用来自MSDN的Stefan Ozminski的代码,但它确定该进程具有管理权限,即使我在没有Windows 7管理权限的普通用户下启动它也是如此.

Bea*_*hed 47

这将告诉您是否使用提升的权限运行.如果要提示,可以将清单设置为尽可能运行.还有其他方法可以通过代码向Windows询问备用凭据.

__PRE__

  • 它旨在让您知道自己是否已被提升或拥有管理权限。使用清单让您强制使用它,但是有一些原因只是想像在标题栏中显示cmd.exe一样显示它,或者永远不要以高程运行 (3认同)
  • 此代码**不**检测程序是否以管理员身份运行。例如,如果您从非管理员用户 ShellExecute("runas") 程序并再次输入用户密码,则此测试将返回 **TRUE** (2认同)