c++中如何判断该进程是系统进程,还是用户进程

有那位高手给指点一下:c++中如何判断该进程是系统进程,还是用户进程
在 Windows 进程是否有管理员权限,取决于它的安全令牌是否包含管理员组的 SID。因此,可以通过获取进程的安全令牌,判断它是否包含管理员组的 SID 来判断进程是否是管理员进程。 下面是一个简单的示例代码,可以判断指定进程是否是管理员进程: ```c++ #include <Windows.h> #include <iostream> bool IsAdmin(HANDLE token) { BOOL is_admin = FALSE; PSID admin_group = NULL; // 获取管理员组的 SID SID_IDENTIFIER_AUTHORITY nt_authority = SECURITY_NT_AUTHORITY; if (!AllocateAndInitializeSid(&nt_authority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &admin_group)) { return false; } // 判断进程是否是管理员 if (!CheckTokenMembership(token, admin_group, &is_admin)) { is_admin = false; } FreeSid(admin_group); return is_admin == TRUE; } bool IsProcessAdmin(DWORD pid) { HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); if (!process) { return false; } HANDLE token; if (!OpenProcessToken(process, TOKEN_QUERY, &token)) { CloseHandle(process); return false; } bool is_admin = IsAdmin(token); CloseHandle(token); CloseHandle(process); return is_admin; } int main(int argc, char* argv[]) { if (argc != 2) { std::cout << "Usage: " << argv[0] << " <pid>" << std::endl; return 1; } DWORD pid = std::stoul(argv[1]); bool is_admin = IsProcessAdmin(pid); std::cout << "Process " << pid << " is admin process: " << (is_admin ? "Yes" : "No") << std::endl; return 0; } ``` 在上面的代码,`IsAdmin` 函数用于判断进程是否是管理员进程,`IsProcessAdmin` 函数用于获取指定进程的安全令牌,并调用 `IsAdmin` 函数来判断进程是否是管理员进程。在 `main` 函数,通过命令行参数传入要判断进程的 PID,输出该进程是否是管理员进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值