• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

判断当前进程是否以管理员权限运行(AllocateAndInitializeSid后,用CheckTokenMember ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在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下测试没问题

剩下的不解释

http://blog.csdn.net/just_fancy/article/details/6310347

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi之标签组件(TLabel组件)发布时间:2022-07-18
下一篇:
delphixe10.4新功能介绍发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap