C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了正确的方法来确定服务是否作为SYSTEM用户运行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
确定进程是否以SYstem用户身份运行的正确方法是什么.我正在寻找一个win32 C API来检查系统用户.

我们曾经检查用户名是否为“SYstem”,但自Windows Server 2008 R2起,SYstem用户似乎已本地化.即荷兰系统上的SYSTEEm.

我无法通过搜索引擎找到有关系统用户的大量信息,因为您获得了数百万次虚假命中.

提前致谢
尼尔

@H_419_17@解决方法
有独立于本地化 here代码.

BOOL IsLocalSystem()
{
  HANDLE hToken;
  UCHAR bTokenUser[sizeof(TOKEN_USER) + 8 + 4 * SID_MAX_SUB_AUTHORITIES];
  PTOKEN_USER pTokenUser = (PTOKEN_USER)bTokenUser;
  ULONG cbTokenUser;
  SID_IDENTIFIER_AUTHORITY siaNT = Security_NT_AUTHORITY;
  PSID pSystemSid;
  BOOL bSystem;

  // open process token
  if (!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hToken))
      return falSE;

  // retrieve user SID
  if (!GetTokenInformation(hToken,TokenUser,pTokenUser,sizeof(bTokenUser),&cbTokenUser))
  {
    CloseHandle(hToken);
    return falSE;
  }

  CloseHandle(hToken);

  // allocate LocalSystem well-kNown SID
  if (!AllocateAndInitializeSid(&siaNT,1,Security_LOCAL_SYstem_RID,&pSystemSid))
    return falSE;

  // compare the user SID from the token with the LocalSystem SID
  bSystem = EqualSid(pTokenUser->User.Sid,pSystemSid);

  FreeSid(pSystemSid);

  return bSystem;
}@H_607_18@ 
 

对于任何定义为here的已知SID,相同的代码将起作用(如果已修改).

大佬总结

以上是大佬教程为你收集整理的正确的方法来确定服务是否作为SYSTEM用户运行全部内容,希望文章能够帮你解决正确的方法来确定服务是否作为SYSTEM用户运行所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。