Войти

Показать полную графическую версию : [решено] Помогите с оператором If


wer0102
26-07-2013, 06:51
Пожалуйста Помогите, сам в 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}\"


Заранее спасибо всем!

Iska
26-07-2013, 07:33
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}».

wer0102
26-07-2013, 07:51
сколько пробовал удалить PowerDVD в тихом режиме не получается, надо удалить что бы пользователь не видел не каких окошек. боремся с не лицензионным ПО.

Iska
26-07-2013, 09:07
wer0102, ясно. Но посмотрите какое количество разделов остаётся у Вас в реестре, например, по этой теме: Help! Need silent uninstall for PowerDVD 5.7! - Application Installs - MSFN Forum (http://www.msfn.org/board/topic/93161-help-need-silent-uninstall-for-powerdvd-57/). Конечно, в реальности надо рассматривать конкретно взятую версию.

wer0102
26-07-2013, 11:05
Спасибо еще раз все работает.


То, что Вы делаете, в корне неправильно: надо проверять раздел в реестре в «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX», если таковой найден — брать оттуда параметр «UninstallString» и использовать его.». »


Может еще подскажите, как заставить считать и выполнить параметр из реестра UninstallString

Iska
26-07-2013, 13:16
Может еще подскажите, как заставить считать и выполнить параметр из реестра 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» в реестре. Ну, и, удалённо, разумеется, окна не будет видно — оно будет запущено не на текущем десктопе удалённого пользователя.

wer0102
30-07-2013, 07:15
Iska, еще раз спасибо, с вашей помощью нашел даже больше чем искал. :) :) :)




© OSzone.net 2001-2012