我试图找出如何检测用户是否在Windows XP下运行管理员权限.由于whoami命令,这在Vista/Win7中相当容易.这是Ruby中的一个片段,介绍如何在Vista下执行此操作:
注意,以下链接现在包含muteW建议的解决方案
http://gist.github.com/65931
麻烦的是,whoami不附带Windows XP,因此即使我们以管理员身份运行,上面链接的方法也会在WinXP上返回false.
那么,是否有人知道如何使用Ruby,命令行工具,批处理文件甚至第三方(需要开源,真正的)工具来检测我们是否在Windows XP下作为管理员运行?
这将检测用户是否在提升模式下运行(例如,命令提示符为"运行方式"管理员).它依赖于您需要管理员权限才能读取LOCAL SERVICE帐户注册表项的事实:
reg query "HKU\S-1-5-19"
如果无法读取,则返回非零错误代码,如果可以,则返回零.
从XP起作用......
如果你跑
>net localgroup administrators
在命令shell中,您应该获取Windows XP中的管理员帐户列表.只需解析并扫描输出以检查所需的特定用户帐户.例如,要检查当前用户是否是管理员,您可以这样做 -
>net localgroup administrators | find "%USERNAME%"
Piskvor选项很好,或查看此网址 http://weseetips.com/2008/04/16/how-to-check-whether-current-user-have-administrator-privilege/
这是该页面中的代码
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; PSID AdministratorsGroup; // Initialize SID. if( !AllocateAndInitializeSid( &NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup)) { // Initializing SID Failed. return false; } // Check whether the token is present in admin group. BOOL IsInAdminGroup = FALSE; if( !CheckTokenMembership( NULL, AdministratorsGroup, &IsInAdminGroup )) { // Error occurred. IsInAdminGroup = FALSE; } // Free SID and return. FreeSid(AdministratorsGroup); return IsInAdminGroup;