Путь установки : 7-Zip может быть установлен в другом месте диска (например, диск D:
или где-то еще),Вам нужно прочитать пути из реестра, чтобы быть уверенным.Ниже приведено несколько предложений:
1. Hacky Version
Ниже приведен полный сценарий использования, но вы можете получить то, чтохотите хакерский способ (убедитесь, что пути действительно существуют - очевидно, - возможно, используйте "C:\Program Files\7-Zip"
, если обнаружены проблемы):
Check File Exists:
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists("C:\Program Files (x86)\7-Zip\7z.exe")) Then
' Do Stuff
End If
Get File Version:
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetFileVersion("C:\Program Files (x86)\7-Zip\7z.exe")
Не полагайтесь на это, пожалуйста.Это потерпит неудачу в конце концов.Пожалуйста, смотрите ниже.
2. Full Version
Вот полная версия, шаги, которые вам нужно сделать, чтобы сделать что-то, что имеет надежду быть надежным.По сути, прочитайте пути из реестра и возьмите его оттуда:
Const HKEY_LOCAL_MACHINE = &H80000002 : strComputer = "."
Set fso = CreateObject("Scripting.FileSystemObject")
Set reg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
' 64-bit - Read 7-zip installation path from registry
regpath64 = "SOFTWARE\7-Zip"
reg.GetStringValue HKEY_LOCAL_MACHINE, regpath64, "Path64", regvalue64
fullpath64 = regvalue64 + "\" + "7z.exe"
If (fso.FileExists(fullpath64)) Then
MsgBox "7-zip 64-bit: " + fso.GetFileVersion(fullpath64), vbOKOnly, "64-bit:"
End If
' 32-bit - Read 7-zip installation path from registry
regpath32 = "SOFTWARE\WOW6432Node\7-Zip"
reg.GetStringValue HKEY_LOCAL_MACHINE, regpath32, "Path", regvalue32
fullpath32 = regvalue32 + "\" + "7z.exe"
If (fso.FileExists(fullpath32)) Then
MsgBox "7-zip 32-bit: " + fso.GetFileVersion(fullpath32), vbOKOnly, "32-bit:"
End If
Отказ от ответственности : для 64-разрядного реестра прочитайте: может быть путьи запись Path64 (у меня есть оба).Не уверен, что более ранние и / или более поздние версии будут иметь.Пожалуйста, проверьте.