启动以管理员身份运行有2中方式。
1.筛选令牌。意思就是,默认情况下,一个进程启动时,会与筛选令牌进行关联,所以权限受限,但是最终用户可以通过右击图标菜单,以run as admin来运行程序。然后就会有UAC的安全提示框提示是否继续。
2.提升进程的权限,VS开发过程。
判断一个进程是以提升的权限来启动的,还是正在使用筛选的令牌运行的?
GetCurrentProcess---------得到当前进程句柄
OpenProcessToken--------打开当前进程关联的令牌。(会得到一个令牌句柄)
GetTokenInformation-----------获得与进程关联的令牌的信息(记得使用TokenElevationType参数来获得提升类型)
如果令牌没有被筛选过,用IsUserAnAdmin函数来判断进程是否正在以管理员的身份运行是最理想的。
如果令牌已经被筛选,然后需要通过给GetTokenInformation传递TokenLinkedToken参数来获取一个未筛选的令牌,然后判断其中是否包含一个管理员SID。
CreateWellKnowSid---------传递WinbuiltinAministratorsSid参数来创建一个与管理员组一致的SID。
CheckTokenMembership----------检查一个令牌的权限组。
相关文章
- 12-17windows编程中关于“关闭窗口无法退出进程”的解决方法
- 12-17(并发编程)进程IPC,生产者消费者模型,守护进程补充
- 12-17Python核心编程读笔 10:函数和函数式编程
- 12-17Windows核心编程:第10章 同步设备IO与异步设备IO
- 12-17python 并发编程 查看进程的pid与ppid
- 12-17165 python网络编程 - 单进程服务器(gevent版)
- 12-17python 之 并发编程(守护线程与守护进程的区别、线程互斥锁、死锁现象与递归锁、信号量、GIL全局解释器锁)
- 12-17UNIX环境编程学习笔记(15)——进程管理之进程终止
- 12-17windows核心编程---第六章 线程的调度
- 12-17Python 多进程编程之 进程间的通信(在Pool中Queue)