我正在尝试使用ServiceController在另一台计算机上管理服务。
var sc = new ServiceController(serviceName, machine);
Console.WriteLine(sc.Status);由于我需要使用不同的凭据,因此我使用以下命令执行模拟:
var tokenHandle = IntPtr.Zero;
bool returnValue = LogonUser(userName, domainName, password,
LOGON32_LOGON_NEW_CREDENTIALS,
LOGON32_PROVIDER_DEFAULT,
ref tokenHandle);
if (!returnValue)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
WindowsIdentity newId = new WindowsIdentity(tokenHandle);
impersonatedUser = newId.Impersonate();模拟似乎起作用了。但我一直收到一个InvalidOperationException:
System.InvalidOperationException: Cannot open MyService service on computer 'TargetMachine'.
---> System.ComponentModel.Win32Exception: Access is denied我的工作站在一个域中,而目标计算机加入了一个工作组。
你知道我在这里错过了什么吗?
发布于 2013-07-25 02:32:25
当目标计算机加入工作组时,
我的工作站位于域中
这就是你的问题。您正在使用本地帐户或域帐户进行模拟。它们不是目标计算机的一部分,因为它在工作组中。
https://stackoverflow.com/questions/17838746
复制相似问题