У меня странная проблема,
У меня работает веб-сайт. net core 3.0 Я пытаюсь проверить состояние службы удаленного компьютера и пользователя, который вошел в систему через Windows Аутентификация имеет все соответствующие разрешения.
Я пытаюсь использовать Олицетворение для этой функции, однако, когда я использую токен доступа от пользователя. Удостоверение личности, которое я получаю: Не удается открыть диспетчер управления службами на компьютере «XXXX». Эта операция может потребовать других привилегий.
Однако, когда я просто создаю SafeAccessToken, используя этот метод https://docs.microsoft.com/en-us/dotnet/api/system.security.principal.windowsidentity.runimpersonated?view=netframework-4.8 Это работает.
Это мой код
var userToImpersonate = (WindowsIdentity)httpContext.HttpContext.User.Identity;
//Check the identity.
logger.LogDebug("Before impersonation: " + WindowsIdentity.GetCurrent().Name);
var result = WindowsIdentity.RunImpersonated(userToImpersonate.AccessToken, () =>
{
try
{
var impersonatedUser = WindowsIdentity.GetCurrent().Name;
using (ServiceController sc = new ServiceController(name, computerName))
{
logger.LogInformation("During impersonation: " + WindowsIdentity.GetCurrent().Name);
serviceControllerStatus = sc.Status;
}
}
catch (Exception ex)
{
logger.LogError(ex.Message);
}
return serviceControllerStatus;
});
return result;
}
catch (Exception ex)
{
logger.LogDebug(ex.Message);
Debug.WriteLine(ex.Message);
throw (ex);
}