2017-02-10 39 views
1

背景:獲取 「的參數或無效的屬性賦值錯誤號」 從JavaScript運行WScript.Shell.Run()時

我試圖運行C:在一個\ Windows \ SYSTEM32 \ Logoff.exe本地計算機從ASP.NET Web應用程序註銷本地用戶的終端服務會話。

這是我到目前爲止有:

C#

protected void btnContinueClick(Object sender, 
         EventArgs e) 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("WshShell = new ActiveXObject('WScript.Shell');\n"); 
     sb.Append(@"WshShell.Run('C:\\Windows\\System32\\Logoff.exe " + intSessionID + " /SERVER:" + strServer + "', 1, false);"); 
     ScriptManager.RegisterStartupScript(Page, GetType(), "RestartSession", sb.ToString(), true); 

運行上面的IE的F12菜單打開,顯示腳本被添加到我的成功HTML:

HTML

<script type="text/javascript"> 
//<![CDATA[ 
WshShell = new ActiveXObject('WScript.Shell'); 
WshShell.Run('C:\\Windows\\System32\\Logoff.exe', 1, false);//]]> 
</script> 
</form> 
</body> 

然而,當運行(...)行執行我得到IE以下錯誤:

Error: WshShell.Run() Wrong number of arguments or invalid property assignment 

我曾嘗試:

  1. 取出 「1,假」 可選參數=相同的錯誤。
  2. 移動'',使行讀取(不知道哪個是正確的):sb.Append(@"WshShell.Run('C:\\Windows\\System32\\Logoff.exe " + intSessionID + " /SERVER:" + strServer + ", 1, false);'"); =相同的錯誤。
  3. 使用裏面的logoff命令調用一個.bat文件。 (.bat確實運行,但我得到一個新的錯誤:"logoff is not recognized as an internal or external command, operable program or batch file"。非常類似於Call logoff in Ant script
  4. 也改變了我想到的儘可能多的組合中的轉義字符,所以我不認爲是這樣。
  5. 直接從CMD窗口並預期工作。

請幫助運行命令!

從內部Intranet的Web應用程序註銷用戶的終端服務會話的任何合適的替代方法,也將是非常感謝!

+0

'註銷'需要一些參數? – Teemu

+0

我的計劃是將行替換爲:'sb.Append(@「WshShell.Run('C:\\ Windows \\ System32 \\ Logoff。但是這會產生相同的錯誤。intSessionID和strServer是終端服務會話標識和服務器主機名的正確值。 –

+0

已編輯顯示這些參數的問題,因爲我認爲從Web服務器運行時這些參數是必需的。 –

回答

0

經過很多變化,我有一個工作解決方案。雖然這個問題很可能只是變量傳遞和轉義字符(非常微不足道),但我會發布答案,因爲它可能會在其他平臺上傳遞變量時將其他人指向解決方法。

C#

ScriptManager.RegisterStartupScript(Page, GetType(), "Logoff", $"Logoff(\"{intSessionID}\", \"{strServer}\");", true); 

的JavaScript

<script type="text/javascript"> 
    function Logoff(intID, strSvr) { 
     WshShell = new ActiveXObject("WScript.Shell"); 
     WshShell.Run("C:\\Users\\User\\Desktop\\Logoff.vbs" + " \"" + intID + "\" " + " \"" + strSvr + "\"", 1, false); 
    } 
</script> 

的VB腳本運行原來的Logoff.exe命令,與其他幾個審計記錄線路沿。

相關問題