以管理员身份运行VBScript并等待完成

时间:2014-06-19 20:48:35

标签: windows vbscript admin

我无法找到解决这个问题的明确方法。简而言之,我想要做的是收集计算机上安装的应用程序列表,并将其写入文件。这是我的第一次尝试:

Set objShell = WScript.CreateObject("Wscript.Shell")
randTrashVar = objShell.Run("cmd /c wmic product get Name,Version > " & strAppListPath, 0, true)

但它必须作为管理员运行才能在我的所有情况下工作。所以我尝试用runas包装它,但是不太了解它所以我可能在那里错了。

randTrashVar = objShell.Run("runas /user:Administrator ""cmd /c wmic product get Name,Version > " & strAppListPath & "", 0, true)

或者也使用objShell.Exec做某事

Set getAppsProcess = objShell.Exec("runas /user:Administrator ""cmd /c wmic product get Name,Version > " & strAppListPath & "")
Do While getAppsProcess.Status = 0
    WScript.Sleep 100
Loop

第一个让我到达某个地方,他们都等待命令完成然后继续前进,但根本没有以管理员/跑步的方式运行(据我所知)。

现在以管理员身份运行,但没有等待

CreateObject("Shell.Application").ShellExecute "cmd", "/c wmic product get Name,Version > " & strAppListPath, "", "runas", 1 

我可以做些什么来充分利用这些?

1 个答案:

答案 0 :(得分:0)

其中一个。 WMIC不需要管理员 - •

wmic

首次在系统安装后运行Wmic时,必须从提升的命令提示符运行它。除非WMI操作需要管理员权限,否则后续执行Wmic可能不需要提升模式。见http://msdn.microsoft.com/en-au/library/aa826699(v=vs.85).aspx

开始 - 所有程序 - 附件 - 右键单击​​“命令提示符”,然后选择“以管理员身份运行”。键入(或通过右键单击“命令提示符”窗口并选择“粘贴”进行复制和粘贴)。表格格式的类型

wmic /output:"%userprofile%\desktop\WindowsInstaller.html" product get /format:htable

或表格格式

wmic /output:"%userprofile%\desktop\WindowsInstaller.html" product get /format:hform

它将在桌面上创建一个html文件。

请注意

这不是完整列表。这只是与Windows Installer一起安装的产品。一切都没有特色。

但正如我在上一篇文章中所述,几乎所有内容都列在注册表中。

所以要在命令提示符下看到它

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s

或在文件中

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s>"%userprofile%\desktop\WindowsUninstall.txt"

以不同的格式在记事本中查看

单击开始 - 所有程序 - 附件 - 右键单击​​命令提示符,然后选择以管理员身份运行。键入Regedit并导航到

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

右键单击“卸载”键,然后选择“导出”。如果您保存为reg文件(还有文本文件,它们的文本格式略有不同),您需要右键单击该文件并选择“编辑”进行查看。

查看Windows更新

wmic /output:"%userprofile%\desktop\WindowsUpdate.html" qfe  get /format:htable