您的位置:首页 > 其它

判断当前进程是否以管理员权限运行

2011-04-08 18:27 645 查看
在Win7下(Vista以上的...)有时某些操作就是会让人郁闷

开启了UAC的话,得以管理员权限运行才不会出现Access is denied。。。

但是,程序又不是非得什么时候都用那破管理员权限的

总不能在manifest里加权限,然后用户运行时老弹确认吧?

当然啦,可以将需要管理员权限的部分写到另一个小程序,需要时调用它就行了

不过还是不爽,如果是一个小小的程序还要再加另一个小小小程序的话

那好,干脆判断是不是Win7。。。开启了UAC没有之类

开启的话再判断下是不是以管理员权限运行,不是则提示下用户下面的操作需管理员权限

。。。。

貌似这样还勉强可以

上代码吧,啰嗦了那么多

bool
IsProcessRunAsAdmin()

{

SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;

PSID AdministratorsGroup;

BOOL
b = AllocateAndInitializeSid(

&NtAuthority,

2,

SECURITY_BUILTIN_DOMAIN_RID,

DOMAIN_ALIAS_RID_ADMINS,

0, 0, 0, 0, 0, 0,

&AdministratorsGroup);

if
(b)

{

CheckTokenMembership(NULL, AdministratorsGroup, &b);

FreeSid(AdministratorsGroup);

}

return
b == TRUE
;

}

几乎完全是COPY MSDN上的例子了,

在Win7下测试没问题

剩下的不解释
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: