Получить имя LocalGroup Windows C ++, используя SID

Я пытаюсь получить название группы относительно SID группы. SID локальной группы администраторов S-1-5-32-544 например. Я использую функцию ConvertStringSidToSid а также LookupAccountSid получить имя группы администратор, но функция вернет 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);
}

Я получаю следующую ошибку:

Код ошибки: 87
Неверный параметр.

1

Решение

LookupAccountSid() требует PSID, а не указатель на PSID, так &psid это неверно.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]