C# - Windows服务 - 远程WMI查询出错:RPC未找到

3
我正在开发一个WMI查询Windows服务来查询网络服务器。 如果在控制台中运行应用程序,它会按预期工作,但服务无法完成WMI查询。有没有办法设置服务,以便RPC不会因权限不足而失败?我在WMI查询中使用凭据连接到远程PC,所以那应该不是问题。
谢谢

服务运行的是哪个账户? - BugFinder
可能是"使用WMI查询时RPC服务器不可用"的重复问题。 - Falco Alexander
1个回答

1

可能的原因:

  • 防火墙配置(RPC连接被阻止)

  • 您没有足够的权限运行WMI查询。

如果您正在尝试在远程计算机上运行查询,则第二个点是有效的。您可以使用wbemtest进行验证。

  1. Windows+R(运行命令)

  2. 键入wbemtest

您必须连接ManagementScope并检查其有效性scope.IsConnected。这只是一小段代码,您可能需要为它提供一个结构。

ConnectionOptions cOption = new ConnectionOptions();
    ManagementScope scope = new ManagementScope("\\\\" + machine + "\\" + nameSpaceRoot + "\\" + managementScope, cOption);
           scope.Options.Username = UserName;
            scope.Options.Password = passWord;
            scope.Options.EnablePrivileges = true;
            scope.Options.Authentication = AuthenticationLevel.PacketPrivacy;
            //scope.Options.Timeout = TimeSpan.FromSeconds(180);
            //cOption.Timeout = TimeSpan.FromSeconds(180);
            scope.Options.Impersonation = ImpersonationLevel.Impersonate;
            scope.Connect();
            return scope;



    if (scope.IsConnected && scope != null)
    {
    query = new ObjectQuery(@"Select * from Win32_SCSIController");
                            searcher = new ManagementObjectSearcher(scope, query); searcher.Options.Timeout = new TimeSpan(0, 0, wbemConnectFlagUseMaxWait);
                            ManagementObjectCollection qWin32_SCSIController = searcher.Get();
    foreach (ManagementObject item in qWin32_SCSIController)
    {    
    <Some code here>
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接