Проверьте, что пользователь является администратором на локальном компьютере в C++ в Windows
Я пытаюсь найти решение или winapi, чтобы проверить, является ли имя пользователя admin или нет на локальной машине.
Процесс выполняется в Windows Credential Provider, поэтому я считаю, что проверка текущего пользовательского потока не даст мне желаемого значения.
Обратите внимание, что я прошел через другие ответы в Stackru, который указывает на MSDN, который оценивает токен доступа пользователя текущего потока.
У меня есть имя пользователя, для которого мне нужно найти информацию о доступе, есть ли у пользователя права доступа администратора на текущем компьютере
Любые указатели или предложения приветствуются.
1 ответ
Я не уверен, что он будет делать то, что вы хотите, но NetUserGetInfo имеет поле, которое, по крайней мере, очень похоже на то, что вы, похоже, просите:
bool is_user_admin()
{
bool result;
DWORD rc;
wchar_t user_name[256];
USER_INFO_1 *info;
DWORD size = sizeof( user_name );
GetUserNameW( user_name, &size);
rc = NetUserGetInfo( NULL, user_name, 1, (byte **) &info );
if ( rc != NERR_Success )
return false;
result = info->usri1_priv == USER_PRIV_ADMIN;
NetApiBufferFree( info );
return result;
}
Есть также LsaEnumerateAccountRights
, но (если память не изменяет) это показывает только те права / привилегии, которые назначены непосредственно соответствующей учетной записи, а не те, которые он получает через членство в группах и т. д. (но это было довольно давно, а моей памяти еще далеко до совершенства).