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;
    }
  • 相关阅读:
    Web前端浏览器兼容性问题及解决方案
    JS
    vue element-ui 重置样式问题
    学习的一些文章链接
    打开新世界的第一步:学习servlet
    java学习初体验之课后习题
    下载、安装jdk8(Windows下)并配置变量环境
    下载PhpStorm并进行激活
    WCF+NHibernate 序列化
    wcf 证书+ssl+自定义用户名密码
  • 原文地址:https://www.cnblogs.com/ahuo/p/1409471.html
Copyright © 2011-2022 走看看