javascript - 从 JavaScript 运行 WScript.Shell.Run() 时获取 "Wrong number of arguments or invalid property assignment"

标签 javascript c# wsh

背景:

我正在尝试从 ASP.NET Web 应用程序在本地计算机上运行 C:\Windows\System32\Logoff.exe,以从本地用户的终端服务 session 中注销。

这是我到目前为止所拥有的:

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>

但是,当 Run(...) 行执行时,我在 IE 中收到以下错误:

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

我尝试过的:

  1. 删除“, 1, false”可选参数=同样的错误。
  2. 移动“”,使该行读取(不知道哪个是正确的):sb.Append(@"WshShell.Run('C:\\Windows\\System32\\Logoff.exe "+ intSessionID + "/SERVER:"+ strServer + ", 1, false);'"); = 同样的错误。
  3. 调用包含注销命令的 .bat 文件。 (.bat 确实运行,但是我收到一个新错误:“注销未被识别为内部或外部命令、可操作程序或批处理文件”。与 Call logoff in Ant script 非常相似。<
  4. 还以我能想到的尽可能多的可能组合更改了转义字符,所以我认为不是这样的。
  5. 直接从 CMD 窗口运行命令即可完成预期的工作。

请帮忙!

任何从内部 Intranet Web 应用程序注销用户终端服务 session 的合适替代方法也将不胜感激!

最佳答案

经过多次修改,我有了一个可行的解决方案。尽管问题很可能只是变量传递和转义字符(非常微不足道),但我还是发布了答案,因为它可以为其他人在跨多个平台传递变量时指出解决方法。

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 命令以及其他几个审核日志记录行。

关于javascript - 从 JavaScript 运行 WScript.Shell.Run() 时获取 "Wrong number of arguments or invalid property assignment",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165632/

相关文章:

javascript - 在 SailsJS 中将 Angular 表单数据发布到 MongoDB

c# - 解密 cookie 会将其转换为本地时间吗?

javascript - 如何在 HTA 中获取文件的关联图标 (HTML/Javascript/VBScript)

c# - Windows Xp 上的 Microsoft.Windows.ActCtx

javascript - 如何将 "external"文本文件打包到 elisp 模块中?

Javascript返回值在onclientclick之后运行onclick

javascript - 立即显示对 HTML5 Canvas 的更改

javascript - Chart.js 刻度线和 X 轴之间的空间

c# - 有没有办法在属性网格之外使用 CollectionEditor?

c# - 运行 .NET 3.5 进程时,.NET 4 和 .NET 3.5 之间是否存在差异