[英]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.