有朋友问我怎么取得当前用户的Sid,其实很简单,用GetTokenInformation...
还是直接看代码吧:
还是直接看代码吧:
- #include "stdafx.h"
- #include <windows.h>
- #include <Sddl.h>
- #define MAX_NAME 256
- BOOL GetCurrentUserForSID (VOID)
- {
- DWORD dwSize = 0, dwResult = 0;
- HANDLE hToken;
- PTOKEN_USER pUserInfo;
- LPSTR StringSid;
- if (!OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &hToken ))
- return FALSE;
- if(!GetTokenInformation(hToken, TokenUser, NULL, dwSize, &dwSize))
- {
- dwResult = GetLastError();
- if( dwResult != ERROR_INSUFFICIENT_BUFFER )
- return FALSE;
- }
- pUserInfo = (PTOKEN_USER) GlobalAlloc( GPTR, dwSize );
- if(! GetTokenInformation(hToken, TokenUser, pUserInfo,
- dwSize, &dwSize ) )
- {
- return FALSE;
- }
- ConvertSidToStringSid(pUserInfo->User.Sid, &StringSid);
- printf("Sid: %s\n", StringSid);
- if ( pUserInfo )
- GlobalFree( pUserInfo );
- return TRUE;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- GetCurrentUserForSID();
- return 0;
- }