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;
    }
  • 相关阅读:
    Python自动化测试用例设计--测试类型
    几个常用高阶函数(es6)
    在ES中有关变量和作用域的几个小坑
    HTML快速生成代码的语法(Emmet)
    JavaScript之对象
    C语言格式化输出输入
    常用的win10快捷键
    Scrapy核心组件解析
    scrapy持久化存储的几种方式的简介
    scrapy框架的基础使用流程
  • 原文地址:https://www.cnblogs.com/ahuo/p/1409471.html
Copyright © 2011-2022 走看看