У меня есть приложение ASP.NET, которое выполняет вызов WMI для удаленной системы. Приложение Web.config содержит параметры и , которые, как я понимаю, должны заставить код приложения выполняться от имени пользователя приложения.
Проблема в том, что я получаю ошибку «Доступ запрещен», несмотря на то, что я могу успешно выполнить мой запрос WMI с консоли PowerShell на том же хосте под тем же пользователем на рассматриваемом удаленном сервере.
// this doesn't work
ManagementScope scope = new ManagementScope();
scope.Path.NamespacePath = "root\\virtualization";
scope.Path.Server = "vs01";
scope.Connect(); // <-- here comes exception
# this works just fine
Get-WmiObject -Namespace 'root\virtualization' -Class Msvm_ComputerSystem -ComputerName vs01
Сброс свойств HttpContext.Current.User.Identity.Name, System.Security.Principal.WindowsIdentity.GetCurrent (). Name, System.Threading.Thread.CurrentPrincipal.Identity.Name предполагает, что олицетворение работает должным образом.
Идеи? Может ли проблема быть в какой-то безопасности .NET или IIS?