簡體   English   中英

遠程機器上的 iisreset (C#)

[英]iisreset on remote machine (C#)

Process myProcess = new Process();
ProcessStartInfo remoteAdmin =
            new ProcessStartInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) + @"\iisreset.exe /restart");

remoteAdmin.UserName = username;
remoteAdmin.Password = pwd;
remoteAdmin.Domain = domain;
myProcess.StartInfo = remoteAdmin;
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardOutput = true;

myProcess.Start();   --- ERROR HERE

找不到指定的文件。

但是當我嘗試通過 cmd 在本地機器上運行 iisreset 時,它正在工作。

除非我遺漏了什么, (Environment.GetFolderPath(Environment.SpecialFolder.System)將取回本地機器(代碼運行的地方)特殊文件夾。所以它期待文件C:\Windows\System\iisreset.exe到位於您的機器上。我能看到解決此問題的唯一方法是刪除C:\並添加設備名稱\\DeviceName\C$\然后文件路徑。這是假設特殊文件夾系統位於您的機器和遠程機器上的同一位置。

獲取遠程機器系統目錄的唯一其他方法是通過 WMI 或通過讀取 reg 條目來獲取它。

因此,如果使用 WMI:

"SELECT * FROM Win32_OperatingSystem"

完成后,您需要自己從中構建文件夾字符串。

沒有名為C:\Windows\System\iisreset.exe /restart的文件(假設Environment.GetFolderPath(Environment.SpecialFolder.System)返回C:\Windows\System\

所以你會想要

ProcessStartInfo remoteAdmin = 
     new ProcessStartInfo(Environment.GetFolderPath(Environment.SpecialFolder.System) + "iisreset.exe");
remoteAdmin.Arguments = "/restart";

但是Environment.GetFolderPath(Environment.SpecialFolder.System)可能會返回類似於C:\Windows\System東西(注意沒有斜杠),並且肯定沒有名為c:\windows\systemiisreset.exe的文件

所以你實際上想要

ProcessStartInfo remoteAdmin = 
    new ProcessStartInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "iisreset.exe"));
remoteAdmin.Arguments = "/restart";

iisreset.exe 支持遠程調用,因此您實際上可以執行以下操作,而不是使用 WMI 來獲取遠程目錄:

iisreset {servername}

暫無
暫無

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

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