Windows installierte Software direkt einlesen
Windows installierte Software direkt einlesen
Hallo,
Da ich zur Zeit meine "installierte Software" über den CCleaner Abfrage und eine Datei erstelle, würde mich interessieren ob es eine Möglichkeit in PB gibt, die "installierte Software" von Windows direkt über PB auszulesen?
Gruss ... Velindos
Da ich zur Zeit meine "installierte Software" über den CCleaner Abfrage und eine Datei erstelle, würde mich interessieren ob es eine Möglichkeit in PB gibt, die "installierte Software" von Windows direkt über PB auszulesen?
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Windows installierte Software direkt einlesen
als Vorarbeit: regedit starten und diesen Schlüssel suchen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
hierunter befinden sich alle Einträge, die in der Softwareliste erscheinen.
Über diese Einträge musst Du mit RegEnumKey(Ex) iterieren und den jeweiligen DisplayName ermitteln.
Grüße ... Kiffi
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
hierunter befinden sich alle Einträge, die in der Softwareliste erscheinen.
Über diese Einträge musst Du mit RegEnumKey(Ex) iterieren und den jeweiligen DisplayName ermitteln.
Grüße ... Kiffi
a²+b²=mc²
Re: Windows installierte Software direkt einlesen
Hallo,
in dieser Sache bin ich nicht weitergekommen. Liegt daran das ich noch PB_Anfänger bin und zu wenig über diese Medie(WindowsRegistry) auskenne.
Meine Idee wäre, die Inhalte in einen ListIconGadget so Darzustellen wie es unter |Windows|Standardprogramme|Programme und Funktionen|Installierte Programme erfolgt. Habe einiges probiert aber nichts in die Wege gebracht, vielleicht kann mir wer helfen?
Gruss ... Velindos
in dieser Sache bin ich nicht weitergekommen. Liegt daran das ich noch PB_Anfänger bin und zu wenig über diese Medie(WindowsRegistry) auskenne.
Meine Idee wäre, die Inhalte in einen ListIconGadget so Darzustellen wie es unter |Windows|Standardprogramme|Programme und Funktionen|Installierte Programme erfolgt. Habe einiges probiert aber nichts in die Wege gebracht, vielleicht kann mir wer helfen?
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Windows installierte Software direkt einlesen
Hallo Velindos,
für meine Software "PCInfoPoint" brauchte ich sowas ebenfalls.
Wie man alle Programme, die installiert sind, aus der Registry ermitteln kann (inkl. Pfad zur Deinstallation) habe ich für sowas folgendes geschrieben:
Ich hoffe, es hilft dir weiter, um daraus deine Darstellung zu erstellen.
Ist vielleicht nicht perfekt, aber es funktioniert jedenfalls.
für meine Software "PCInfoPoint" brauchte ich sowas ebenfalls.
Wie man alle Programme, die installiert sind, aus der Registry ermitteln kann (inkl. Pfad zur Deinstallation) habe ich für sowas folgendes geschrieben:
Code: Alles auswählen
EnableExplicit
Define EventID
Procedure.s GetInstalledProgramDisplayName(vKey.s)
Protected Size
Protected Name$
Protected Result
Protected Key
Size=#MAX_PATH
Name$=Space(Size)
Result=RegOpenKeyEx_(#HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+vKey.s,0,#KEY_ALL_ACCESS,@Key)
If Result=0
RegQueryValueEx_(Key,"DisplayName",0,0,@Name$,@Size)
RegCloseKey_(Key)
EndIf
ProcedureReturn Name$
EndProcedure
Procedure.s GetInstalledProgramUninstallString(vKey.s)
Protected Size
Protected Name$
Protected Result
Protected Key
Size=#MAX_PATH
Name$=Space(Size)
Result=RegOpenKeyEx_(#HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+vKey.s,0,#KEY_ALL_ACCESS,@Key)
If Result=0
RegQueryValueEx_(Key,"UninstallString",0,0,@Name$,@Size)
RegCloseKey_(Key)
EndIf
ProcedureReturn Name$
EndProcedure
Procedure.s GetInstalledProgramNames(hKey.l, sKey.s, pc.s)
Protected ret.l
Protected hnd.l
Protected vKey.s
Protected vSize.l
Protected vLWT.FILETIME
Protected remhnd.l
Protected Index.l
Protected DisplayName$
Protected UninstallString$
ret=RegConnectRegistry_(pc, hKey, @remhnd)
If ret=#ERROR_SUCCESS
ret=RegOpenKeyEx_(remhnd, sKey, 0, #KEY_ALL_ACCESS, @hnd)
If ret=#ERROR_SUCCESS
Index=0
While ret=#ERROR_SUCCESS
vSize=255 : vKey=Space(255)
ret=RegEnumKeyEx_(hnd, Index, @vKey, @vSize, 0, 0, 0, @vLWT)
If ret=#ERROR_SUCCESS
DisplayName$=GetInstalledProgramDisplayName(vKey)
UninstallString$=GetInstalledProgramUninstallString(vKey)
If Not RTrim(DisplayName$)=""
AddGadgetItem(10,-1,DisplayName$+Chr(10)+UninstallString$,0,0)
EndIf
EndIf
Index+1
Wend
EndIf
EndIf
RegCloseKey_(remhnd)
EndProcedure
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
ListIconGadget(10,0,0,WindowWidth(0),WindowHeight(0),"Programmname",200,0)
AddGadgetColumn(10,1,"Deinstallationspfad",200)
GetInstalledProgramNames(#HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall","")
Repeat
EventID=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Ist vielleicht nicht perfekt, aber es funktioniert jedenfalls.
Re: Windows installierte Software direkt einlesen
Hallo,
danke für deinen Source. Mir fehlen aber noch die Spalten wie Version, installiert am, Herausgeber und Grösse. Bin hier noch am tüffteln, wenn jemand was weiss!
Gruss ... Velindos
danke für deinen Source. Mir fehlen aber noch die Spalten wie Version, installiert am, Herausgeber und Grösse. Bin hier noch am tüffteln, wenn jemand was weiss!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Re: Windows installierte Software direkt einlesen
hast Du Dir denn die Registryeinträge mal mit RegEdit angeschaut?Velindos hat geschrieben:Mir fehlen aber noch die Spalten wie Version, installiert am, Herausgeber und Grösse.
Dort steht alles, was Du ermitteln möchtest.

Grüße ... Kiffi
a²+b²=mc²
Re: Windows installierte Software direkt einlesen
Hallo Velindos,
wie Kiffi bereits gesagt hat, kannst du aus der Registry alle Werte entnehmen, die du benötigt.
Du hast ja von mir eine Grundlage erhalten und mit dieser kannst du problemlos erweitern.
wie Kiffi bereits gesagt hat, kannst du aus der Registry alle Werte entnehmen, die du benötigt.
Du hast ja von mir eine Grundlage erhalten und mit dieser kannst du problemlos erweitern.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Windows installierte Software direkt einlesen
Mal so Nebenbei:
Wenn ein Nichtschwimmer fragt, wo er sich für die nächsten Schwimmweltmeisterschaften anmeldet,
würde ich mich nicht für Ihn anmelden und ihm den Pokal reichen, ich würden ihn in das Wasser
werfen, damit er erst einmal Schwimmen lernt.
Wenn ein Nichtschwimmer fragt, wo er sich für die nächsten Schwimmweltmeisterschaften anmeldet,
würde ich mich nicht für Ihn anmelden und ihm den Pokal reichen, ich würden ihn in das Wasser
werfen, damit er erst einmal Schwimmen lernt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Windows installierte Software direkt einlesen
Hallo Leute,
das mit Schwimmen ist ja ein guter Ansatz, dann machst du ja gleich den Weltmeister bei diesen Problem.
Als nochmals Danke für dein Beispiel! Habe mich damit beschäftigt.
Ein Problem ist da ich unter Windows7/64Bit arbeite, dass Windows zwei Verzeichnisse hat (C:\Program Files, C:\Program Files (x86)).
Nach dem Test habe ich festgestellt das die Software nicht vollständig ist.
Die Übersicht kann auch direkt im Windows mit appwiz.cpl aufgerufen werden. Jedoch der Inhalt dieser stimmt in keinen Fall zur Zeit mit dem Beispiel überrein!
Also werde ich weitertüffteln und trotzt aller Unkenrufe das Problem lösen.
Gruss ... Velindos
das mit Schwimmen ist ja ein guter Ansatz, dann machst du ja gleich den Weltmeister bei diesen Problem.
Als nochmals Danke für dein Beispiel! Habe mich damit beschäftigt.
Ein Problem ist da ich unter Windows7/64Bit arbeite, dass Windows zwei Verzeichnisse hat (C:\Program Files, C:\Program Files (x86)).
Nach dem Test habe ich festgestellt das die Software nicht vollständig ist.
Die Übersicht kann auch direkt im Windows mit appwiz.cpl aufgerufen werden. Jedoch der Inhalt dieser stimmt in keinen Fall zur Zeit mit dem Beispiel überrein!
Also werde ich weitertüffteln und trotzt aller Unkenrufe das Problem lösen.
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)