如何通过 .net c# 连接到另一台具有 windows 操作系统的主机?

how to connect to another host which has windows operating system by .net c#?

我想连接到具有 windows 操作系统的主机,然后在该计算机中 运行 一些命令。通常我尝试了两种解决方案:

  1. 我在两台电脑上都安装了openSSh然后用ssh命令 在 CMD 中连接到主机并成功(这是在 为了确保我可以连接)然后我使用 SSH.net 库通过 SSh 连接到 Visual Studio 中的那个主机,但它没有连接 错误是 "已建立的连接被 您主机中的软件“(我阅读了所有关于此的问题 错误) 。我认为出现此错误是因为 ssh.net 库是 为 linux 连接而非 windows 编写。我说得对吗?

  2. 我阅读了有关 WMI(windows 管理工具)的信息,并尝试先通过 windows PowerShell 创建连接 (再次确定没有任何问题)。我 已采取许多行动来解决问题 "accessing deny"(例如检查防火墙、安全访问和权限,运行 windows 中的一些命令 power shell) 但它还没有解决。(我几乎阅读了所有关于这个问题的问题)。我在我的应用程序中尝试了这段代码,但出现了异常。

    ip = "172.17.9.2";
    username = "****";
    password = "***";
    port = 22 ;
    var processToRun = new[] { "notepad.exe" };
    var connection = new ConnectionOptions();
    connection.Username = username;
    connection.Password = password;
    var wmiScope = new ManagementScope(String.Format("\\{0}\root\cimv2", "FB"), connection);
    var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
        wmiProcess.InvokeMethod("Create", processToRun);
    

我在 WMI 上花了很多时间来了解问题所在。现在我正在寻找另一种简单易行的方法。

使用 WMI 时,您需要使用在远程计算机上具有权限的用户帐户

所以,如果您有 PC1,并且您以 user1 身份登录,然后尝试登录 PC2,它会尝试以 PC1\user1 身份登录。所以您需要具体说明您的用户名登录远程机器,或者确保第二台机器上的用户。

您可能需要发送 PC2\User1 以 User1 的身份登录到远程机器上,这是一个完全不同的人