zoukankan      html  css  js  c++  java
  • GetCurrentUserSid


    BOOL GetCurrentUserSid(std::string& strSID)
    {
     CCommonFunc func;
     DWORD dwProcessID = func.GetProcessIDFromName("explorer.exe");
     if( 0 == dwProcessID )
     {
      return FALSE;
     }
    #ifndef _RELEASE_WIN9X
     HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwProcessID);
     if( hProc == NULL )
     {
      return FALSE;
     }
     HANDLE hToken;
     if( !OpenProcessToken(hProc, TOKEN_QUERY, &hToken) )
     {
      CloseHandle(hProc);
      return FALSE;
     }
     CloseHandle(hProc);
     BOOL bRet = FALSE;
     TOKEN_USER *pTokenUser;
     DWORD Len;
     char* pBuffer = NULL;
     if( !GetTokenInformation(hToken, TokenUser, NULL, 0, &Len) )
     {
      if( GetLastError() ==  ERROR_INSUFFICIENT_BUFFER )
      {
       pBuffer = new char[Len];
       if( !GetTokenInformation(hToken,TokenUser, pBuffer, Len, &Len) )
       {
        delete pBuffer;
        CloseHandle(hToken);
        return FALSE;
       }
      }
      else
      {
       CloseHandle(hToken);
       return FALSE;
      }
     }
     
     pTokenUser = (TOKEN_USER*)pBuffer;
     char *szStringSID;
     if( FALSE == ConvertSidToStringSid(pTokenUser->User.Sid, &szStringSID) )
     {
      CloseHandle(hToken);
      return FALSE;
     }
     else
     {
      strSID = szStringSID;
      //std::string strTemp = szStringSID;
      LocalFree(szStringSID);
      //strSID = strTemp;
     }
     CloseHandle(hToken);
     
    #endif _RELEASE_WIN9X
     return TRUE;
    }
  • 相关阅读:
    ubuntu下mysql的安装
    useradd和adduser的区别
    C和指针之学习笔记(6)
    C和指针之学习笔记(5)
    C和指针之学习笔记(4)
    Centos 7搭建Gitlab服务器超详细
    .NET Core sdk和runtime区别
    .NET平台历程介绍
    GitLabCICD
    Jenkins+gitlab+msbuild
  • 原文地址:https://www.cnblogs.com/ahuo/p/1409471.html
Copyright © 2011-2022 走看看