启动以管理员身份运行有2中方式。
1.筛选令牌。意思就是,默认情况下,一个进程启动时,会与筛选令牌进行关联,所以权限受限,但是最终用户可以通过右击图标菜单,以run as admin来运行程序。然后就会有UAC的安全提示框提示是否继续。
2.提升进程的权限,VS开发过程。
判断一个进程是以提升的权限来启动的,还是正在使用筛选的令牌运行的?GetCurrentProcess---------得到当前进程句柄
OpenProcessToken--------打开当前进程关联的令牌。(会得到一个令牌句柄)
GetTokenInformation-----------获得与进程关联的令牌的信息(记得使用TokenElevationType参数来获得提升类型)如果令牌没有被筛选过,用IsUserAnAdmin函数来判断进程是否正在以管理员的身份运行是最理想的。如果令牌已经被筛选,然后需要通过给GetTokenInformation传递TokenLinkedToken参数来获取一个未筛选的令牌,然后判断其中是否包含一个管理员SID。CreateWellKnowSid---------传递WinbuiltinAministratorsSid参数来创建一个与管理员组一致的SID。CheckTokenMembership----------检查一个令牌的权限组。
1.筛选令牌。意思就是,默认情况下,一个进程启动时,会与筛选令牌进行关联,所以权限受限,但是最终用户可以通过右击图标菜单,以run as admin来运行程序。然后就会有UAC的安全提示框提示是否继续。
2.提升进程的权限,VS开发过程。
判断一个进程是以提升的权限来启动的,还是正在使用筛选的令牌运行的?GetCurrentProcess---------得到当前进程句柄
OpenProcessToken--------打开当前进程关联的令牌。(会得到一个令牌句柄)
GetTokenInformation-----------获得与进程关联的令牌的信息(记得使用TokenElevationType参数来获得提升类型)如果令牌没有被筛选过,用IsUserAnAdmin函数来判断进程是否正在以管理员的身份运行是最理想的。如果令牌已经被筛选,然后需要通过给GetTokenInformation传递TokenLinkedToken参数来获取一个未筛选的令牌,然后判断其中是否包含一个管理员SID。CreateWellKnowSid---------传递WinbuiltinAministratorsSid参数来创建一个与管理员组一致的SID。CheckTokenMembership----------检查一个令牌的权限组。
解决方案 »
- CLhpHtmlView和CDHTMLDialog怎么实现鼠标移到一个区域就可以对其使用滚轮
- (满分献上)求VC知识库上的一源代码
- 如何设置使catatic与父窗口的透明度不同
- 怎样从"字体名"得到"字体文件名"和从"字体文件名"得到"字体名"
- 我的资源加载不成功怎么办,“Load Failed”请高手帮忙。谢谢了
- 能不能显示地引出类
- 今天11:30左右的中国国际广播电台新闻,比尔盖次在加州被刺身亡!讨论WINDOWS下的程序员将回受到什么影响!
- 找朋友!
- 我做了一个程序,没有包含对windows winsocks的支持,现在我想加上网络通信的功能,我该怎么做?
- 按住并拖动事件,怎么响应?
- CListCtrl在关联ImageList后如何取消
- 想问vc6.0如何合并avi和wav音频为一个avi?
我问的是 isuseranadmin 可以替代 "如果令牌已经被筛选,然后需要通过给GetTokenInformation传递TokenLinkedToken参数来获取一个未筛选的令牌,然后判断其中是否包含一个管理员SID。"替代有颜色这段文字。你看懂没?
你可以用管理员权限登陆,但是用非管理员权限运行程序。触发你右键选择run as administrator
我问的是 isuseranadmin 可以替代 "如果令牌已经被筛选,然后需要通过给GetTokenInformation传递TokenLinkedToken参数来获取一个未筛选的令牌,然后判断其中是否包含一个管理员SID。"替代有颜色这段文字。你看懂没?
isuseranadmin只是判断你的操作是否是以管理员打开,这一个结果.但是无法知道你是怎么获取的管理员权限。上面一大段已经说了。
我问的是 isuseranadmin 可以替代 "如果令牌已经被筛选,然后需要通过给GetTokenInformation传递TokenLinkedToken参数来获取一个未筛选的令牌,然后判断其中是否包含一个管理员SID。"替代有颜色这段文字。你看懂没?
isuseranadmin只是判断你的操作是否是以管理员打开,这一个结果.但是无法知道你是怎么获取的管理员权限。上面一大段已经说了。
若果你仅仅需要这个结果, isuseranadmin可以替代。
过程无法知道。