如何在 C# 中修复无效操作异常

本文关键字:无效 操作 异常 | 更新日期: 2023-09-27 18:34:18

我有一个应用程序,其中使用IP地址将PC(其他和自己的)添加为服务器,状态设置为"正在运行"。在数据库中为相同的条目创建一个条目。

假设我添加了 2 台服务器 10.51.1.159 和 10.51.1.136,刷新时 10.51.1.159 的状态为"

正在运行"(因为它是本地的),10.51.1.136 的状态为"错误"(因为它是远程的)。当我尝试调试时,10.51.1.136 会引发以下异常。

远程服务器抛出异常无效操作异常 System.InvalidOperationException: Cannot open notifyservice service on computer '10.51.1.136'. ---> System.ComponentModel.Win32Exception: Access is denied .

执行此操作的代码如下所示:

static public void GetServerStatus(DataTable dt, string service)
{
    GetServerStatusColumns(dt);
    // get the service status for each server in the datatable
    ServiceController control = new ServiceController();
    foreach (DataRow row in dt.Rows)
    {
        try 
        {
            control.ServiceName = service;
            control.MachineName = row["SERVER_ADDRESS"].ToString();
            string status = control.Status.ToString(); // This is not set for 10.51.1.136, jumped to catch block after this.
            row["SERVICE_STATUS_ID"] = Convert.ToInt32(Enum.Format(control.Status.GetType(), control.Status, "d")) - 1;
            row["SERVICE_STATUS"] = status;
            if (status == "Running")
            {
                row["SERVICE_CANSTART"] = false;
                row["SERVICE_CANSTOP"] = true;
            } 
            else 
            {
                row["SERVICE_CANSTART"] = true;
                row["SERVICE_CANSTOP"] = false;
            }
        }
        catch (InvalidOperationException exp)
        {
            row["SERVICE_STATUS_ID"] =  5; // stopped
            row["SERVICE_STATUS"] = "Error";
            string excep = Convert.ToString(exp);
            row["SERVICE_CANSTART"] = false;
            row["SERVICE_CANSTOP"] = false;
        }
    }
}

我检查了防火墙是否阻塞,但似乎防火墙不是问题所在。请帮助我。提前谢谢。

如何在 C# 中修复无效操作异常

"

访问被拒绝"表示运行应用程序的帐户无权管理其他计算机上的服务?

是否在本地帐户上运行?然后更改为域帐户(在其他服务器上获得权限)。