我有一个网站,用户可以在其中模拟/验证自己到远程服务器,并控制特定的 Windows 服务。如果我在本地运行项目,它工作正常,但是当我将项目发布到运行IIS 服务器的Web服务器上时,它给出了一个异常:
无法在计算机(计算机名称)上打开服务控制管理器。此操作可能需要其他权限。
我的工作:
一个模拟的类(在本地运行良好):
public class ImpersonationUtil { public static bool Impersonate() { string logon = "ADMIN"; string password = "PASS"; string domain = "THEDOMAIN"; IntPtr token = IntPtr.Zero; IntPtr tokenDuplicate = IntPtr.Zero; WindowsImpersonationContext impersonationContext = null; if (LogonUser(logon, domain, password, 2, 0, ref token) != 0) if (DuplicateToken(token, 2, ref tokenDuplicate) != 0) impersonationContext = new WindowsIdentity(tokenDuplicate).Impersonate(); return (impersonationContext != null); } [DllImport("advapi32.dll", CharSet = CharSet.Auto)] public static extern int LogonUser(string lpszUserName, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); [DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)] public extern static int DuplicateToken(IntPtr hToken, int impersonationLevel, ref IntPtr hNewToken); }
连接服务的代码:
ServiceController controller = new ServiceController("serviceName", "machineAddress"); var status = controller.Status;
Web.config 的东西(阅读和接受网络服务器上的模拟):
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
有什么帮助吗?