使用 SID 获取 LocalGroup Windows C++ 的名称
Get name of LocalGroup Windows C++ using SID
我正在尝试获取有关组 SID 的组名称。例如,本地管理员组的 SID 是 S-1-5-32-544。我使用函数 ConvertStringSidToSid 和 LookupAccountSid 来获取组管理员的名称,但是函数 return 0.
对此有何建议?
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <lmcons.h>
#include <lmaccess.h>
#include <lmerr.h>
#include <lmapibuf.h>
#include <stdio.h>
#include <stdlib.h>
#include <Sddl.h>
#include <string>
#pragma comment(lib, "netapi32.lib")
#pragma comment(lib, "Advapi32.lib")
static const DWORD MAX_BUFF_SIZE = 256;
std::wstring userNameFromSid()
{
PSID psid;
BOOL bSucceeded = ConvertStringSidToSid(TEXT("S-1-5-11"), &psid);
if (bSucceeded == FALSE) {
printf("Error Converting SID to String");
}
wchar_t buffName[MAX_BUFF_SIZE];
DWORD buffNameSize = MAX_BUFF_SIZE;
wchar_t buffDomain[MAX_BUFF_SIZE];
DWORD buffDomainSize = MAX_BUFF_SIZE;
SID_NAME_USE SidType = SidTypeGroup;
if (LookupAccountSid(NULL, &psid, buffName, &buffNameSize, NULL, &buffDomainSize, &SidType))
{
printf("group name %ws\n", buffName);
return buffName;
}
printf("Error code: %d", GetLastError());
LocalFree(psid);
/*Here some code to print error in a Message box*/
return L"";
}
int main()
{
NET_API_STATUS err = 0;
userNameFromSid();
return(0);
}
我收到以下错误:
Error code: 87
The parameter is incorrect.
LookupAccountSid()
需要 PSID
,而不是指向 PSID
的指针,因此 &psid
不正确。
我正在尝试获取有关组 SID 的组名称。例如,本地管理员组的 SID 是 S-1-5-32-544。我使用函数 ConvertStringSidToSid 和 LookupAccountSid 来获取组管理员的名称,但是函数 return 0.
对此有何建议?
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <lmcons.h>
#include <lmaccess.h>
#include <lmerr.h>
#include <lmapibuf.h>
#include <stdio.h>
#include <stdlib.h>
#include <Sddl.h>
#include <string>
#pragma comment(lib, "netapi32.lib")
#pragma comment(lib, "Advapi32.lib")
static const DWORD MAX_BUFF_SIZE = 256;
std::wstring userNameFromSid()
{
PSID psid;
BOOL bSucceeded = ConvertStringSidToSid(TEXT("S-1-5-11"), &psid);
if (bSucceeded == FALSE) {
printf("Error Converting SID to String");
}
wchar_t buffName[MAX_BUFF_SIZE];
DWORD buffNameSize = MAX_BUFF_SIZE;
wchar_t buffDomain[MAX_BUFF_SIZE];
DWORD buffDomainSize = MAX_BUFF_SIZE;
SID_NAME_USE SidType = SidTypeGroup;
if (LookupAccountSid(NULL, &psid, buffName, &buffNameSize, NULL, &buffDomainSize, &SidType))
{
printf("group name %ws\n", buffName);
return buffName;
}
printf("Error code: %d", GetLastError());
LocalFree(psid);
/*Here some code to print error in a Message box*/
return L"";
}
int main()
{
NET_API_STATUS err = 0;
userNameFromSid();
return(0);
}
我收到以下错误:
Error code: 87 The parameter is incorrect.
LookupAccountSid()
需要 PSID
,而不是指向 PSID
的指针,因此 &psid
不正确。