获取本地服务列表信息的时候报了不知名的错误

zhu5152 2018-12-10 07:20:15

这是获取本地计算机服务列表的时候就报错了。

网上找了半天 也找不到关于 System.Runtime.InteropServices.COMException (0x800700A4) 这个异常的资料




public Win32ServiceManager(string host, string userName, string password, bool isLocal)
{
this.sHost = host;
this.strPath = "\\\\" + host + "\\root\\cimv2:Win32_Service";
this.managementClass = new ManagementClass(strPath);
if (userName != null && userName.Length > 0)
{
ManagementScope managementScope;
if (isLocal)
{
managementScope = new ManagementScope("\\\\" + host + "\\root\\cimv2");
}
else
{
ConnectionOptions connectionOptions = new ConnectionOptions();
connectionOptions.Username = userName;
connectionOptions.Password = password;
managementScope = new ManagementScope("\\\\" + host + "\\root\\cimv2", connectionOptions);
}
this.managementClass.Scope = managementScope;
}
}

string sServicesName;
string sState;
string sStartMode;
string[,] services = new string[this.managementClass.GetInstances().Count, 4];
int i = 0;
foreach (ManagementObject mo in this.managementClass.GetInstances())
{
sServicesName = (string)mo["Name"];
if (sServicesName.Length < 4)
continue;
if (sServicesName.Substring(0, 4) == "ZYTK")
{
services[i, 0] = sServicesName;
services[i, 1] = (string)mo["Description"];//描述
sState = (string)mo["State"];
if (sState.Trim() == "Running")
services[i, 2] = "已启动";
else
services[i, 2] = "停止";
sStartMode = (string)mo["StartMode"];
if (sStartMode.Trim() == "Auto")
services[i, 3] = "自动";
if (sStartMode.Trim() == "Disabled")
services[i, 3] = "已禁用";
if (sStartMode.Trim() == "Manual")
services[i, 3] = "手动";
i++;
}
else
continue;
}
return services;

try catch 后 大概是这两段代码报了异常
if (Win32ServiceManager.SSManager == null)
{
string LocalIP = GetLocalIP();
Win32ServiceManager.SSManager = new Win32ServiceManager(LocalIP, "username", "pwd", true);
}
//将Zytk带头的服务获取出来
ServicesInfo = Win32ServiceManager.SSManager.GetZytkServiceList();

...全文
40 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu5152 2018-12-10
  • 打赏
  • 举报
回复

 public string[,] GetZytkServiceList()
        {
            string sServicesName;
            string sState;
            string sStartMode;
            string[,] services = new string[this.managementClass.GetInstances().Count, 4];
            int i = 0;
            foreach (ManagementObject mo in this.managementClass.GetInstances())
            {
                sServicesName = (string)mo["Name"];
                if (sServicesName.Length < 4)
                    continue;
                if (sServicesName.Substring(0, 4) == "ZYTK")
                {
                    services[i, 0] = sServicesName;
                    services[i, 1] = (string)mo["Description"];//描述
                    sState = (string)mo["State"];
                    if (sState.Trim() == "Running")
                        services[i, 2] = "已启动";
                    else
                        services[i, 2] = "停止";
                    sStartMode = (string)mo["StartMode"];
                    if (sStartMode.Trim() == "Auto")
                        services[i, 3] = "自动";
                    if (sStartMode.Trim() == "Disabled")
                        services[i, 3] = "已禁用";
                    if (sStartMode.Trim() == "Manual")
                        services[i, 3] = "手动";
                    i++;
                }
                else
                    continue;
            }
            return services;
        }
第二段代码 少了个头

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧