Сообщение Re[2]: Детект прав админа у пользователя от 29.03.2024 15:25
Изменено 29.03.2024 15:35 VladD2
Re[2]: Детект прав админа у пользователя
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А потом по нему получить WindowsPrincipal
До сюда все пучком...
PD>и проверить роль
PD>https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
А вот это не работает.
ЧЯДНТ?
PD>А потом по нему получить WindowsPrincipal
До сюда все пучком...
PD>и проверить роль
PD>https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
А вот это не работает.
public static bool IsLoginLocalAdministrator(string userName, string domainName, string password)
{
SafeTokenHandle safeTokenHandle;
try
{
const int LOGON32_PROVIDER_DEFAULT = 0;
//This parameter causes LogonUser to create a primary token.
const int LOGON32_LOGON_INTERACTIVE = 2;
// Call LogonUser to obtain a handle to an access token.
bool returnValue = LogonUser(userName, domainName, password,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
out safeTokenHandle);
if (!returnValue)
{
var ret = Marshal.GetLastWin32Error();
throw new System.ComponentModel.Win32Exception(ret);
}
using (safeTokenHandle)
{
using WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle());
WindowsIdentity.RunImpersonated(newId.AccessToken, () =>
{
// Вот тут возвращает false на учетку локального админа :(
return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
});
}
}
catch (Exception ex)
{
Debug.WriteLine("Exception occurred. " + ex.Message);
}
return false;
}
ЧЯДНТ?
Re[2]: Детект прав админа у пользователя
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>А потом по нему получить WindowsPrincipal
До сюда все пучком...
PD>и проверить роль
PD>https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
А вот это не работает.
ЧЯДНТ?
PD>А потом по нему получить WindowsPrincipal
До сюда все пучком...
PD>и проверить роль
PD>https://stackoverflow.com/questions/3600322/check-if-the-current-user-is-administrator
А вот это не работает.
public static bool IsLoginLocalAdministrator(string userName, string domainName, string password)
{
SafeTokenHandle safeTokenHandle;
try
{
const int LOGON32_PROVIDER_DEFAULT = 0;
//This parameter causes LogonUser to create a primary token.
const int LOGON32_LOGON_INTERACTIVE = 2;
// Call LogonUser to obtain a handle to an access token.
bool returnValue = LogonUser(userName, domainName, password,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
out safeTokenHandle);
if (!returnValue)
{
var ret = Marshal.GetLastWin32Error();
throw new System.ComponentModel.Win32Exception(ret);
}
using (safeTokenHandle)
{
using WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle());
return WindowsIdentity.RunImpersonated(newId.AccessToken, () =>
{
// Вот тут возвращает false на учетку локального админа :(
return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
});
}
}
catch (Exception ex)
{
Debug.WriteLine("Exception occurred. " + ex.Message);
}
return false;
}
ЧЯДНТ?