本文共 1175 字,大约阅读时间需要 3 分钟。
在Win7中,你可以在cmd中输入whoami/user来轻松获取sid信息,但是,要在程序中获得,该怎么做呢?如下(Windows API, 我服了你):
#include#include #define MAX_NAME 256void ConvertSid(PSID pSid, LPTSTR TextualSid){ PSID_IDENTIFIER_AUTHORITY psia = GetSidIdentifierAuthority(pSid); DWORD sidLen = sprintf(TextualSid, TEXT("S-%lu-"), SID_REVISION); sidLen += sprintf(TextualSid + strlen(TextualSid), TEXT("%lu"), psia->Value[5]); int i = 0; int subAuthorities = *GetSidSubAuthorityCount(pSid); for (i = 0; i < subAuthorities; i++) { sidLen += sprintf(TextualSid + sidLen, TEXT("-%lu"), *GetSidSubAuthority(pSid, i)); }}void GetLocalSid(LPTSTR szSid){ char szUserName[MAX_NAME] = {0}; DWORD nameSize = sizeof(szUserName) ; GetUserName(szUserName, &nameSize); char szUserSid[MAX_NAME] = {0}; char szUserDomain[MAX_NAME] = {0}; DWORD sidSize = sizeof(szUserSid); DWORD domainSize = sizeof(szUserDomain); SID_NAME_USE snu; LookupAccountName( NULL, szUserName, (PSID)szUserSid, &sidSize, szUserDomain, &domainSize, &snu ); ConvertSid(szUserSid, szSid); }int main(){ char szSid[MAX_NAME] = {0}; GetLocalSid(szSid); printf("%s\n", szSid); return 0;}
转载地址:http://rirvi.baihongyu.com/