我正在使用VBScript复制Windows 7/8添加删除程序小程序.我已经让脚本包含所有正确的条目,但我无法让它包含Windows显示的所有正确的附加信息.
例如:Windows显示带有日期的"已安装"列.在某些情况下,它从相关的注册表键获取这些,如:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
HKUS\USER - SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
Run Code Online (Sandbox Code Playgroud)
很少有键实际上具有InstallDate值,Windows总是填充此列.我设法从WMI中抓住了大部分缺失的日期:
("SELECT * FROM Win32_Product Where Description = " & "'" & strName & "'" & "")
for each objSoftware in colSoftware
Date = objSoftware.InstallDate
Run Code Online (Sandbox Code Playgroud)
这仅提供MSI安装的应用程序的日期.
我想也许Windows"猜到"基于Program Files/ProgramData文件日期的日期,但我尝试手动更改它们并没有反映在添加/删除中.我正在试图弄清楚Windows如何拉动这个日期.我注意到CCleaner可以重现添加/删除而不会出错,所以这些信息可以在某处获得.我只是筋疲力尽地寻找它.
这通常是我可以在网上很容易找到的东西,但我认为我的措辞很难,所以如果这是一个重复的问题,我道歉.
我正在寻找一种更简洁的方法来对同一查询进行IF/OR检查.例如:
if (sCheck == "string1" || sCheck == "string2" || sCheck == "string3")
{
MessageBox.Show(sCheck + " is one of the three possible strings.");
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种更简洁的方式来做同样的If/Or.我希望这些东西可以工作,但当然他们不会:
if (sCheck == "string1" || "string2" || "string3") { }
if (sCheck == ("string1" || "string2" || "string3")) { }
Run Code Online (Sandbox Code Playgroud) 我正在试验文件夹重定向,在设置好之后,我很快意识到任何具有 %UserProfile% 等环境变量的 VBS 脚本都变得不可用。
例如:
C:\MD %UserProfile%\Desktop\Not_Created_On_Real_Desktop\
Run Code Online (Sandbox Code Playgroud)
和
'Place to deposit excel output file
Depo=oShell.ExpandEnvironmentStrings("%userprofile%" & "\Desktop\Folder_This_User_Needs_Easy_Access_To\")
if not objfso.folderexists(Depo) then
objFSO.CreateFolder(Depo)
end if
Run Code Online (Sandbox Code Playgroud)
这些在使用文件夹重定向时不再起作用。我希望有一个解决办法,因为我现有的很多脚本都依赖于这个变量保持有效。我发现 .NET 能够通过以下方式拉出重定向的文件夹:
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
Run Code Online (Sandbox Code Playgroud)
不过,我没有太多运气找到 VBS 的等价物。
任何帮助表示赞赏。谢谢!