06. marts 2009 - 07:40Der er
9 kommentarer og 1 løsning
Uninstall script
hejsa Jeg håber der er er nogle kodekarle det kan hjælpe.. jeg skal bruge et script der kan afinstallere en stak programmer, men jeg har kun "display name" fra regdbasen at arbejde med. og jeg har et problem for det script jeg har klippet og kopieret i har en const variabel ´jeg bare ikke aftter at få fjernet. det drejer sig on 25 programmer der skal afinstalleres på 100 maskiner og det er ikke alle maskiner der har alle programmerne installeret... jeg har lavet en paste af det script jeg egentlig havde i tankerne. men man kan ikke bare kopiere / paste igen og igen i det samme scrpit pga den const variabel.. kan i hjælpe...
On Error Resume Next
'********************************************************************** const AppName = "Det er jo så her hvor der er flere applikationer der skal afinstalleres" '**********************************************************************
const HKEY_LOCAL_MACHINE = &H80000002
Set WshShell = WScript.CreateObject("WScript.Shell")
'First, find the GUID strComputer = "." Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_ strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys InstalledAppName = "" InstalledAppName = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")
If InStr(InstalledAppName, AppName) > 0 then RawGUID = "" GUID = "" RawGUID = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\UninstallString") GUID = Mid(RawGUID, instr(RawGUID, "{"), 38) If GUID<>"" then ' Found matching GUID, removing... WshShell.Run "msiexec /x " & GUID & " /q" Exit For End If End If Next
Håber lidt at der ern nogen der kan hjælpe :) rimeligt hurtigt :)
jeps... men jeg har ikke fået scriptet til at fungere...
den skal f.eks fjerne
adobe AIR Adobe acrobat 8.1.3 Professional Adobe registry key rights
Disse navne bliver jo som sagt fundet i regdatabasen. dette bliver vi nød til da der er så forbandet mange forskellige programmer, og de har selvfølgelig forskellige GUID. For at finde display name bruger jeg en liste som er blevet udarbejdet over mange maskiners add / remove programs..
så hvis man "bare" kunne få den til at ændre const hver gang den har kontrolleret om programmet findes når den leder regdbasen igennem så vil det være fedt... men jeg har forsøgt med at lave en set istedet for const men så laver den ikke en afinstallation...
Synes godt om
Slettet bruger
06. marts 2009 - 10:07#5
Hvorfor virker det ikke med Dim AppName ? Mister den værdien eller er det bare skummelt? Man kan jo ikke ændre en værdi af typen Const
Hvad med array?
Public myArray(3) AppName = Array("Q1", "Q2", "Q3", "Q4")
det vil sige noget som dette ?? For det syntes jeg nemlig ikke at kunne få til at fungere..
On Error Resume Next
const HKEY_LOCAL_MACHINE = &H80000002 Public myArray(3) AppName = Array("program 1", "program 2", "", "Og så videre")
For Each AppName in AppName
Set WshShell = WScript.CreateObject("WScript.Shell")
'First, find the GUID strComputer = "." Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\"&_ strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys InstalledAppName = "" InstalledAppName = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")
If InStr(InstalledAppName, AppName) > 0 then RawGUID = "" GUID = "" RawGUID = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\UninstallString") GUID = Mid(RawGUID, instr(RawGUID, "{"), 38) If GUID<>"" then ' Found matching GUID, removing... WshShell.Run "msiexec /x " & GUID & " /q" Exit For End If End If Next
Set WshShell = WScript.CreateObject("WScript.Shell")
'First, find the GUID strComputer = "." Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each appname In ArrAppName For Each subkey In arrSubKeys InstalledAppName = "" InstalledAppName = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\DisplayName")
If InStr(InstalledAppName, AppName) > 0 Then 'WScript.Echo InstalledAppName RawGUID = "" GUID = "" RawGUID = WshShell.RegRead("HKLM\" & strKeyPath & "\" & subkey & "\UninstallString") GUID = Mid(RawGUID, instr(RawGUID, "{"), 38) if GUID<>"" Then ' Found matching GUID, removing... WshShell.Run "msiexec /x " & GUID & " /q" Exit For End If End If Next Next
Hvad med denne her? Fungere den for dig?
Du laver i det eksempel du kommer med der, et opslag i et array hvor du vil have udputtet af arrayet ind i samme variabel, det kan jeg godt forestille mig kollidere. :D
On error resume Next er god at bruge bare ikke når man vil finde ud af hvad det egentlig er der fejler i et script.
Jeg har lige testet det her hos mig og der fungere det.
En anden ting er du skriver du ikke kan fjerne din const, en const er egentlig blot en variabel som er konstant, det er derfor den hedder const det fordi det er meningen den skal være ens igennem hele scriptet, og der man bruger consts er som du selv gør i starten for at give eks. HKEY_LOCAL_MACHINE et navn som er til at skrive og huske, hvis du havde skrevet den hex værdi, kan det godt være du lige i det øjeblik du skriver den ved hvad det betyder men det jo ikke sikkert du ved det om et halvt år.
Det virker, tilsyneladende godt nok. Super, men en ting jeg havde glæmt det er ikke alle der kan afinstalleres, på den måde da det jo ikke er alle de rer installeret gennem windows inatalleren :) men hvad det her fungerer indtil videre :) Så hermed er spørgsmålet lukket takker mange gange.
Ingen problem.. :D Du kunne jo evt. gøre det du kryptere dit vbscript og laver en runas i installationen... alt efter hvor meget du vil gøre ud af det kan du evt. lave en GPO der giver din runas bruger lokal admin.. derefter bruge encrypt fra microsoft til at kryptere dit script så ikke lige alle og enhver kan decryptere det... (det ikke 100% sikker løsning da alle kan decryptere med microsoft's tools meeen det gør da at menigmand ikke kan finde ud af det..)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.