一段获取当前用户Sid的小代码

来源:互联网 发布:漕宝路梦海桑拿js照片 编辑:程序博客网 时间:2024/05/16 10:08
有朋友问我怎么取得当前用户的Sid,其实很简单,用GetTokenInformation...

还是直接看代码吧:
  1. #include "stdafx.h"
  2. #include <windows.h>
  3. #include <Sddl.h>

  4. #define MAX_NAME 256

  5. BOOL GetCurrentUserForSID (VOID)
  6. {
  7.     DWORD dwSize = 0, dwResult = 0;
  8.     HANDLE hToken;
  9.     PTOKEN_USER pUserInfo;

  10.     LPSTR    StringSid;

  11.     if (!OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &hToken ))
  12.         return FALSE;

  13.     if(!GetTokenInformation(hToken, TokenUser, NULL, dwSize, &dwSize))
  14.     {
  15.         dwResult = GetLastError();
  16.         if( dwResult != ERROR_INSUFFICIENT_BUFFER )
  17.             return FALSE;
  18.     }

  19.     pUserInfo = (PTOKEN_USER) GlobalAlloc( GPTR, dwSize );

  20.     if(! GetTokenInformation(hToken, TokenUser, pUserInfo,
  21.         dwSize, &dwSize ) )
  22.     {
  23.         return FALSE;
  24.     }

  25.     ConvertSidToStringSid(pUserInfo->User.Sid, &StringSid);
  26.     printf("Sid: %s\n", StringSid);


  27.     if ( pUserInfo )
  28.         GlobalFree( pUserInfo );
  29.     return TRUE;
  30. }

  31. int _tmain(int argc, _TCHAR* argv[])
  32. {
  33.     GetCurrentUserForSID();
  34.     return 0;
  35. }
原创粉丝点击