Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помогите с оператором If (http://forum.oszone.net/showthread.php?t=264992)

wer0102 26-07-2013 06:51 2190895

Помогите с оператором 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}\"

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

Iska 26-07-2013 07:33 2190901

Код:

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 2190913

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

Iska 26-07-2013 09:07 2190936

wer0102, ясно. Но посмотрите какое количество разделов остаётся у Вас в реестре, например, по этой теме: Help! Need silent uninstall for PowerDVD 5.7! - Application Installs - MSFN Forum. Конечно, в реальности надо рассматривать конкретно взятую версию.

wer0102 26-07-2013 11:05 2190970

Спасибо еще раз все работает.


Цитата:

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


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

Iska 26-07-2013 13:16 2191057

Цитата:

Цитата 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» в реестре. Ну, и, удалённо, разумеется, окна не будет видно — оно будет запущено не на текущем десктопе удалённого пользователя.

wer0102 30-07-2013 07:15 2193069

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


Время: 17:50.

Время: 17:50.
© OSzone.net 2001-