[Batch]List installed software

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Topicstarter
Heren en dames, zoals sommigen misschien al opgemerkt hadden in de devschuur coffee corner was ik op bijzonder laag niveau bezig met Batch... (Laag als in eenvoudig, niet low-level ASM like :P)

Nou was ik op zoek naar een manier om een lijst te genereren met installed software. Google is your friend is dan ieders eerste gedachte. Dan vind je bijvoorbeeld deze 3 interessante oplossingen: eenvoudig, complexer, (SO) eenvoudig.

Prima, van de eenvoudige is snel te overzien wat hij doet, dus dat is ook even snel te controleren. Ga je in het register naar desbetreffende gedeelte (of whatever een "map" in regedit heet) zie je dat je daar helemaal niet alle software kan vinden.... Nu zijn er een aantal verklaringen:
1. Windows register is in Windows 7 niet meer precies zo opgebouwd, en de batch voorbeelden zijn outdated
2. 80% van de programma's houd zich niet aan de standaard en registreerd niet z'n install key op de juiste plek.

Wat is nu de juiste manier van handelen? Is er een plek in het register waar wel een juiste lijst is, of moet ik het probleem op een totaal andere manier benaderen? (een dir listing en alle exe's eruit vissen leek me nou niet heel geweldig)

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
afraca schreef op woensdag 02 juni 2010 @ 16:36:
Nu zijn er een aantal verklaringen:
1. Windows register is in Windows 7 niet meer precies zo opgebouwd, en de batch voorbeelden zijn outdated
2. 80% van de programma's houd zich niet aan de standaard en registreerd niet z'n install key op de juiste plek.
3. Het doet precies wat opgedragen wordt, maar dat komt niet overeen met wat jij wil ;)

En daarom hebben we het in de Devschuur over zélf programmeren/maken en niet over het verlenen van support op code van derden ;)

Daarbij: Waar hoort mijn topic?
PRG >> WSS

Wat betreft punt 2: Als "Add/remove" programs de programma's kan vinden (en ik neem aan dat je ze daar wel ziet) houden ze zich dus wel degelijk "aan de standaard" maar zul je dus op meerdere plekken moeten gaan kijken/zoeken of de huidige plek anders/beter uitlezen.

[ Voor 16% gewijzigd door RobIII op 02-06-2010 16:49 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Topicstarter
Ja, want als we code snippets van anderen gebruiken kunnen we zelf niet meer programmeren.....

Ik ben tamelijk nieuw in Batch, dus no way dat ik dat zelf had kunnen bedenken, dan kijk ik naar anderen. Ik vind het hoogst opmerkelijk dat er niet één plaats is waar die software in het register staat. De links die ik gaf wezen alle 3 naar dezelfde plek, en of ik kan echt geen engels meer lezen, maar ze hebben het daar toch echt over "list installed software", niet "list some software so this script is actually useless".

Daarbij: Ben ik nou zo gek? Het gaat hier toch totaal niet om een server? Ik heb het gebruik ervan wellicht niet goed uitgelegd, het is gewoon lokaal op m'n laptop om even vaardiger te worden in Batch (van niks naar een klein beetje kennis). Hoe is dit ooit gerelateerd aan servers?

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Gewoon een WMI query gebruiken.
offtopic:
Batch... yuck. Ga met je tijd mee ;)


Een sleur & pleur/drag & drop 'geinstalleerde' applicatie zul je alleen nooit via de Windows Installer entries terug vinden.
Kun je wel heel stom vinden, maar als een applicatie ontwikkelaar of jij als gebruiker daar geen rekening mee houdt, waarom wil je dan het OS daarvoor verantwoordelijk houden? :)

[ Voor 30% gewijzigd door alt-92 op 02-06-2010 17:04 ]

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 09:49

Reptile209

- gers -

Als je met de hand door de betreffende regkey's loopt, zie je dan wel alles? (m.a.w.: kan het probleem in het script zitten?). Is er software bij die zich misschien niet netjes onder 'local machine' registreerd, maar bijvoorbeeld onder een lokale user (ik roep maar wat), of heb je onvoldoende rechten op bepaalde regkeys? Zit er een patroon in software die wel en niet naar boven komt in de beide rijtjes?

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Topicstarter
(Dit was @ alt-92)

Batch is ook niet mijn favoriet, maar eenvoudig wat aan elkaar te koppelen. Voor V2.0 pas ik wel wat Python toe ;)

Software normaal geinstalleerd, uiteraard geen portable zooi, zou toch érgens in het register op 1 plaats moeten staan, waar haalt de "add/remove programs" z'n informatie dan vandaan?

@Reptile:

Zoals ik al zei in de TS, ik heb het niet klakkeloos over genomen, ik ben zelf even in regedit gedoken, en daar zag ik dus héél wat software ontbreken.

[ Voor 24% gewijzigd door afraca op 02-06-2010 17:10 ]

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

afraca schreef op woensdag 02 juni 2010 @ 17:01:
Ik ben tamelijk nieuw in Batch, dus no way dat ik dat zelf had kunnen bedenken, dan kijk ik naar anderen. Ik vind het hoogst opmerkelijk dat er niet één plaats is waar die software in het register staat.
Vermijd het direct uitlezen/wijzigen van de registry. De opbouw van de registry en de waardes die je daar vindt is een stuk interne huishouding van Windows. Er is geen garantie dat dat niet verandert. WMI is, zoals al genoemd, meestal een veel betere manier.
De links die ik gaf wezen alle 3 naar dezelfde plek, en of ik kan echt geen engels meer lezen, maar ze hebben het daar toch echt over "list installed software", niet "list some software so this script is actually useless".
De registry vermeldt alleen de software waarvan de installer expliciet een entry in de registry heeft gezet, bijvoorbeeld om deinstallatie mogelijk te maken (daar haalt add/remove programs z'n info dus vandaan).
Helaas doen niet alle installers dat en dus is de waarde van die entry inderdaad beperkt. Dat is niet de schuld van Microsoft. Dat is de schuld van die installers.
Als je een volledige lijst van geinstalleerd software wilt, dan zul je toch simpelweg een inventarisatie van alle executables op het systeem moeten doen.
Ik heb het gebruik ervan wellicht niet goed uitgelegd, het is gewoon lokaal op m'n laptop om even vaardiger te worden in Batch (van niks naar een klein beetje kennis).
Als je niet bekend bent met batch, dan is ermee stoppen het beste wat je kunt doen. Batch is zeer beperkt, outdated, en gewoon onhandig. Begin met PowerShell als je iets nuttigs met je tijd wilt doen, eventueel VBS-scripting (al is dat inmiddels ook outdated), maar geen batch.

Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Topicstarter
downtime schreef op woensdag 02 juni 2010 @ 17:12:
[...]

Vermijd het direct uitlezen/wijzigen van de registry. De opbouw van de registry en de waardes die je daar vindt is een stuk interne huishouding van Windows. Er is geen garantie dat dat niet verandert. WMI is, zoals al genoemd, meestal een veel betere manier.
Duik ik nu in ;) Totaal niet bewust van bekend met WMI, ben benieuwd.
[...]

De registry vermeldt alleen de software waarvan de installer expliciet een entry in de registry heeft gezet, bijvoorbeeld om deinstallatie mogelijk te maken (daar haalt add/remove programs z'n info dus vandaan).
Helaas doen niet alle installers dat en dus is de waarde van die entry inderdaad beperkt. Dat is niet de schuld van Microsoft. Dat is de schuld van die installers.
Als je een volledige lijst van geinstalleerd software wilt, dan zul je toch simpelweg een inventarisatie van alle executables op het systeem moeten doen.
Zoals vermeld blijft het dan vreemd dat "add/remove software" wel een flinke lijst weet te produceren. Ik blame niet zomaar Windows. Ik besef me dat ontwikkelaars soms niet registry entries plaatsen, dat noem ik ook als tweede optie in m'n TS.
[...]

Als je niet bekend bent met batch, dan is ermee stoppen het beste wat je kunt doen. Batch is zeer beperkt, outdated, en gewoon onhandig. Begin met PowerShell als je iets nuttigs met je tijd wilt doen, eventueel VBS-scripting (al is dat inmiddels ook outdated), maar geen batch.
Wellicht waard om inderdaad nu gewoon al batch te dumpen. Inderdaad een misbaksel :(

edit: EN wellicht wil Roblll nog even de verplaatsing toelichten.

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

afraca schreef op woensdag 02 juni 2010 @ 17:16:
Zoals vermeld blijft het dan vreemd dat "add/remove software" wel een flinke lijst weet te produceren.
Hoezo is dat vreemd?
Dat zijn software installaties die via de Windows Installer keurig in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall onder andere neer zet.

Een software installatie die dat niet doet (zeg een NSIS of innosetup die geen uninstall info wegschrijft of nog erger: een xcopy deployment - een ordinaire filecopy) zul je dan niet zien.
edit: EN wellicht wil Roblll nog even de verplaatsing toelichten.
Batch of VBscripting hoort niet in de Devschuur thuis, staat dan ook duidelijk in Waar hoort mijn topic? vermeld :)
En dat ie het dan een keer in de Windows Server hoek neerzet - ach :P

[ Voor 4% gewijzigd door alt-92 op 02-06-2010 17:56 ]

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Topicstarter
alt-92 schreef op woensdag 02 juni 2010 @ 17:54:
[...]

Hoezo is dat vreemd?
Dat zijn software installaties die via de Windows Installer keurig in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall onder andere neer zet.

Een software installatie die dat niet doet (zeg een NSIS of innosetup die geen uninstall info wegschrijft of nog erger: een xcopy deployment - een ordinaire filecopy) zul je dan niet zien.
Maar dat is het vreemde. Als m'n add/remove window wel +- 40 programma's laat zien, en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall bevat maar 6 vermeldingen. Ik snap (gelukkig) nog wel dat als een programma zich bij de install er niet in zet, hij niet bij add/remove terecht komt.
[...]

Batch of VBscripting hoort niet in de Devschuur thuis, staat dan ook duidelijk in Waar hoort mijn topic? vermeld :)
En dat ie het dan een keer in de Windows Server hoek neerzet - ach :P
:$ d:)b

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
alt-92 schreef op woensdag 02 juni 2010 @ 17:54:
En dat ie het dan een keer in de Windows Server hoek neerzet - ach :P
8)7 Good meuning :X
WSS >> WOS

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 09:49

Reptile209

- gers -

Bij mij lijkt het op het oog precies andersom: onder HKLM staan *tig entries, maar onder HKCU (Current User) staan er maar een stuk of 10. Kijk dus eens of je software niet stiekum onder HKCU staat, in plaats van HKLM.

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Topicstarter
Dank
Reptile209 schreef op woensdag 02 juni 2010 @ 19:19:
Bij mij lijkt het op het oog precies andersom: onder HKLM staan *tig entries, maar onder HKCU (Current User) staan er maar een stuk of 10. Kijk dus eens of je software niet stiekum onder HKCU staat, in plaats van HKLM.
HKLM heeft wel wat entries, maar slechts 20% van wat verwacht werd. Anyway, om het topic maar even leuk af te sluiten, de gebruikte oplossing nu, de output van :

VBScript:
1
2
3
4
5
6
7
8
9
10
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
    ("Select * from Win32_Product")

For Each objSoftware in colSoftware
    Wscript.Echo "Name: " & objSoftware.Name
Next


naar een .txt bestand schrijven :)

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB

Pagina: 1