em7*_*m70 4 .net c# windows winapi uac
我正在寻找一种方法来检查远程进程是否具有我(完全托管)代码的管理员权限.可以安全地假设我的代码将以管理员权限运行,因此我并不关心实现我的目标的技术是多么具有侵入性,但是我正在寻找一种必须与XP SP3 x86兼容的完全托管方式从win7 x64开始.
提前致谢!
编辑:为了澄清,我说的是在同一台机器上运行的进程,无论用户是谁启动它.我想确保与进程关联的标识属于Administrators组,或者主线程具有完全权限,特别关注继承提升进程打开的句柄并写入存储而没有任何限制,但应用于进程使用"以管理员身份运行"选项生成.
OpenProcess(PROCESS_QUERY_[LIMITED_]INFORMATION)
+ OpenProcessToken(TOKEN_DUPLICATE)
获取令牌,然后DuplicateTokenEx(TOKEN_QUERY,SecurityImpersonation,TokenImpersonation)
获取模拟令牌,然后将该令牌和SID传递CreateWellKnownSid(WinBuiltinAdministratorsSid)
给CheckTokenMembership
.
为了能够(几乎)打开每个PROCESS_QUERY_INFORMATION
访问进程,您需要以管理员身份运行并具有调试权限.在Vista和以后你可以使用PROCESS_QUERY_LIMITED_INFORMATION
.
此答案中提供的示例代码.