【问题标题】:ShellExecute path error in XP - can't find fileXP中的ShellExecute路径错误-找不到文件
【发布时间】:2014-03-28 16:10:22
【问题描述】:

我有一个想要以管理权限执行的批处理文件。我创建了一个 vbscript 文件以使用以下代码以管理员身份启动:

Set UAC = CreateObject("Shell.Application")
UAC.ShellExecute "mybat.bat", "", "", "runas", 1  

当我双击我的 vbs 时,它会报错:

我试过了:

Set UAC = CreateObject("Shell.Application")
UAC.ShellExecute "<path>\mybat.bat", "", "", "runas", 1 

Set UAC = CreateObject("Shell.Application")
UAC.ShellExecute "mybat.bat", "", "<path>", "runas", 1 

这些都不起作用..什么也没发生。

这在 Windows 7+ 上运行良好,但在 Windows XP 上似乎根本无法运行。我在 2004 年发现了一篇关于这方面的已知问题的文章,但那是在 Sp1 中,我有 Sp3,所以应该修复它。

我将路径目录放入环境变量中,但是当我启动 vbs 时,它什么也没做。甚至不会弹出命令窗口。如果没有指定的目录,我认为工作目录是相对的。

我可以做些什么来以管理员身份启动我的 bat 文件,或者有什么办法可以解决这个 vbscript 问题?

【问题讨论】:

    标签: windows batch-file vbscript


    【解决方案1】:

    XP 中没有runas 动词。这是有道理的,因为 XP 中也没有 UAC。

    在 XP 中,您通常会使用 open 动词并期望用户是管理员。如果用户不是管理员,那么您需要使用runas 命令行工具以管理员用户身份运行新的 cmd 进程。这将要求您知道管理员用户名和密码。所以最好留给用户来处理。

    因此,结论是您应该在 Vista 及更高版本中使用 runas 动词,在 XP 及更早版本中使用 open 动词。

    【讨论】:

    • +1 很酷的信息,有没有关于这种“动词”差异的文档?
    • @Rich 我不确定。 ShellExecuteEx 文档是一种可能的来源,但 IIRC 他们没有提到 runas。
    【解决方案2】:

    RunAs 在 XP 中。它允许您选择要使用的用户帐户(在 Vista 中它提升了)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 2021-10-31
      • 2014-07-03
      相关资源
      最近更新 更多