Помогите с оператором If
Пожалуйста Помогите, сам в VBS только пытаюсь делать первые шаги.
Есть такой код на удаление PowerDVD, как написать что бы если существует папка PowerDVD путь C:\Program Files\CyberLink\PowerDVD выполнял код ниже переведенный, если нет то пропускал код.
Код:
On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
set FSO=createobject("scripting.filesystemobject")
fso.deletefolder "C:\Program Files\CyberLink*.*",1
fso.deletefolder "C:\Program Files\InstallShield Installation Information*.*",1
WshShell.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{6811CAA0-BF12-11D4-9EA1-0050BAE317E1}\"
Заранее спасибо всем!
|
Код:
Option Explicit
Dim strPath
Dim objFSO
Dim objWshShell
strPath = "C:\Program Files\CyberLink\PowerDVD"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")
If objFSO.FolderExists(strPath) Then
objFSO.DeleteFolder "C:\Program Files\CyberLink", True
objFSO.DeleteFolder "C:\Program Files\InstallShield Installation Information", True
objWshShell.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{6811CAA0-BF12-11D4-9EA1-0050BAE317E1}\"
End If
Set objWshShell = Nothing
Set objFSO = Nothing
WScript.Quit 0
То, что Вы делаете, в корне неправильно: надо проверять раздел в реестре в «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX», если таковой найден — брать оттуда параметр «UninstallString» и использовать его. Вы же тупо удаляете всю папку «C:\Program Files\CyberLink» и всю папку «C:\Program Files\InstallShield Installation Information», удаляете весь раздел «HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{6811CAA0-BF12-11D4-9EA1-0050BAE317E1}».
|
сколько пробовал удалить PowerDVD в тихом режиме не получается, надо удалить что бы пользователь не видел не каких окошек. боремся с не лицензионным ПО.
|
Спасибо еще раз все работает.
Цитата:
Цитата Iska
То, что Вы делаете, в корне неправильно: надо проверять раздел в реестре в «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX», если таковой найден — брать оттуда параметр «UninstallString» и использовать его.». »
|
Может еще подскажите, как заставить считать и выполнить параметр из реестра UninstallString
|
Цитата:
Цитата wer0102
Может еще подскажите, как заставить считать и выполнить параметр из реестра UninstallString »
|
На примере приложения «USB-модем «Билайн»:
читать дальше »
Код:
Option Explicit
Const HKEY_LOCAL_MACHINE = &H80000002
Dim strKey
Dim strComputer
Dim strValue
Dim lngProcessId
' {93D34EE3-99B3-4DB1-8B0A-0A657466F90D} - USB-модем «Билайн»
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{93D34EE3-99B3-4DB1-8B0A-0A657466F90D}"
strComputer = "."
With WScript.CreateObject("WbemScripting.SWbemLocator")
If .ConnectServer(strComputer, "root\default").Get("StdRegProv").GetStringValue(HKEY_LOCAL_MACHINE, strKey, "UninstallString", strValue) = 0 Then
If .ConnectServer(strComputer, "root\cimv2").Get("Win32_Process").Create(strValue, Empty, Nothing, lngProcessId) = 0 Then
' Good execute uninstall
Else
WScript.Echo "Can't execute [" & strValue & "]."
End If
Else
WScript.Echo "Can't find [HKEY_LOCAL_MACHINE\" & strKey & "\" & UninstallString & "]."
End If
End With
WScript.Quit 0
Тот же код работает и удалённо. Главный минус — удаление интерактивное, код лишь запускает этот процесс, пользуясь строкой «UninstallString» в реестре. Ну, и, удалённо, разумеется, окна не будет видно — оно будет запущено не на текущем десктопе удалённого пользователя.
|
Iska, еще раз спасибо, с вашей помощью нашел даже больше чем искал. :) :) :)
|
Время: 17:50.
© OSzone.net 2001-