簡體   English   中英

在遠程計算機上執行exe

[英]Execute exe on remote machine

我正在嘗試在遠程計算機上執行notepad.exe,但現在無法正常工作。 我想念什么?

var ui = new ImpersonateUser();
    //the process to restart
    const string processName = "notepad.exe";
    var serverName = "serverName";

    try
    {
        //Use adbadmin for access
        ui.Impersonate(_domain, _userName, _pass);

        //Start the process
        ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
        info.FileName = @"C:\PsTools\psexec.exe";
        info.Arguments = @"""\\" + serverName + @"C:\WINDOWS\notepad.exe""";
        info.RedirectStandardOutput = true;
        info.UseShellExecute = false;
        Process p = Process.Start(info);

        lblStatusResponse.Text = "Service " + processName + " was restarted correctly.";
    }
    catch (Exception ex)
    {
        lblStatusResponse.Text = ex.ToString();
    }
    finally
    {
        ui.Undo();
    }

這也不例外,但是我肯定會丟失一些東西。

答案是來自您的答復的組合。 但是整個正確的解決方案是:

        ProcessStartInfo info = new ProcessStartInfo("C:\\PsTools");
        info.FileName = @"C:\PsTools\psexec.exe";
        info.Arguments = @"\\" + serverName + @" -i C:\WINDOWS\notepad.exe";
        info.RedirectStandardOutput = true;
        info.UseShellExecute = false;
        Process p = Process.Start(info);

運行交互式程序(例如notepad.exe)並不總是在目標PC上打開可見的窗口。 嘗試在運行代碼的同時在目標PC上打開任務管理器,並查看notepad.exe是否出現在正在運行的進程列表中。

我建議先嘗試從命令行運行psexec,然后再嘗試通過代碼調用它。

psexec \\serverName "notepad.exe"

您可能還需要使用“交互式”標志,以便它可以與目標上的桌面進行交互。

psexec \\serverName "notepad.exe" -i

您的UNC路徑看起來不好。

字符串連接后,它看起來像

  "\\serverNameC:\WINDOWS\notepad.exe"

嘗試將其打印出來。 請參閱MSDN上有關UNC的文檔以及此處的一些示例(或有關UNC Path的Google)

如果您只有默認共享,則應為

  "\\serverName\C$\WINDOWS\notepad.exe"

或psexec允許您使用其他符號,但是您必須小心使用雙引號

  psexec \\serverName"c:\WINDOWS\notepad.exe"

另外,請確保“服務器”服務正在目標計算機上運行。

PsExec在遠程系統上啟動一個可執行文件,並控制該可執行文件進程的輸入和輸出流,以便您可以從本地系統與該可執行文件進行交互。 PsExec通過從其可執行映像中提取名為Psexesvc的嵌入式Windows服務並將其復制到遠程系統的Admin $共享中來實現。 然后,PsExec使用具有遠程接口的Windows服務控制管理器API在遠程系統上啟動Psexesvc服務。

Admin $共享是由“服務器”服務創建和管理的,因此您需要運行ps $才能使psexec正常工作( http://windowsitpro.com/systems-management/psexec )。

只是為了擴展答案的當前版本。 由於操作系統策略,執行psexec可能存在問題,要啟用遠程控制,您需要修改注冊表:

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

您可以檢查以下內容: 遠程UAC LocalAccountTokenFilterPolicy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM