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

3

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

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 

我该怎样才能获得最佳效果?


当然,两个脚本都可以工作,第一个调用第二个作为管理员。“Set objWMIService = GetObject('winmgmts:{impersonationLevel = impersonate}!\。\root\cimv2')”“Set colItems = objWMIService.ExecQuery('Select * From Win32_Product')”“对于每个objItem in colItems”“msgbox objItem.Name&' '&objItem.Version”“下一个” - phd443322
1个回答

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

.


谢谢您的快速回复。我很喜欢您第一条命令的输出结果,但是我该如何从VBScript中调用它呢?顺便说一下,我以为我需要管理员权限,因为在某台计算机上,在那一行出现了一个关于权限的错误。 - jmullercuber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接