通过SID获取Windows本地组名称

时间:2019-07-09 08:59:22

标签: c++

我想从SID获取本地组的名称,然后将其放入变量中,然后将用户添加到该组中。

我已经尝试过了,但是没有得到任何输出,期望的是组名:

#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>
#include <conio.h>
#include <stdio.h>
#include <iostream>

using namespace std;

#pragma comment(lib, "netapi32.lib")
#pragma comment(lib, "Advapi32.lib")

static const DWORD MAX_BUFF_SIZE = 256;

std::wstring userNameFromSid()
{

    PSID psid = NULL;

    BOOL bSucceeded = ConvertStringSidToSid(TEXT("S-1-5-32-544"), &psid);
    if (bSucceeded == FALSE) {
        cout<<("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))
    {
        cout<<("group name %ws\n", buffName);
        getch();
        return buffName;
    }
    cout<<("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);
}

我不确定是否可以将用户添加到具有SID的组中(而不使用诸如Administrators之类的组名),但是如果可能的话,它将完成该工作。

0 个答案:

没有答案