Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wie lese Ich Hard- und Software aus? (https://www.delphipraxis.net/3565-wie-lese-ich-hard-und-software-aus.html)

Dray 20. Mär 2003 11:05

So Leute erst mal danke für eure Hilfe. ich werde den Fall mal ausprobieren.

Und zu "Da hast du dir aber was vorgenommen": Das hab ich mir nicht vorgenommen, das is mir vorgenommen worden von meinem chef!

Luckie 20. Mär 2003 11:17

Na dann wollne wir mal deinen Chef glücklich machen:
Delphi-Quellcode:
uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  reg : TRegistry;
begin
  reg := TRegistry.Create(KEY_READ);
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    if reg.OpenKey('Software\Microsoft\Windows\Currentversion\Uninstall', FALSE) then
    begin
       reg.GetKeyNames(Listbox1.Items);
    end
    else
      RaiselastOSError();
  finally
    reg.Free;
  end;
end;
Und das nächste mal sagst du ihm, die paar Zeilen kann er selber schreiben. :mrgreen:

MathiasSimmack 20. Mär 2003 11:37

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von janjan
Auf meinem System sind viele Programme und Spiele die in der Registry oder in irgendwelchen .ini Dateien aufgeführt sind (z.b. DScaler, Quake1-3, HL,...).

Ich will nichts unterstellen, aber meine Versionen von Quake und Half-Life besitzen einen vernünftigen Installer. Quake 1 ist sogar ein noch ein DOS-Programm, dessen Ordner sich also ohne Risiko löschen lässt.
Das Problem mit den übrig bleibenden Dateien (Konfigs, INIs, usw.) lässt sich auf die damals benutzten Installer-Versionen schieben. Die haben nur das entfernt, was sie installiert haben. Dateien, die zur Laufzeit hinzukamen, stehen nicht im Install-Log und werden daher nicht beachtet. Seitdem aber auch InstallShield und Wise zunehmend auf das MSI-Modul von Microsoft setzen, bestünde die Möglichkeit, zusätzliche Dateien zu spezifizieren, die bei der Deinstallation ebenfalls gelöscht werden. Es liegt also im Ermessen des Entwicklers bzw. Installer-Machers, wie er die Mittel nutzt.

Zitat:

Zitat von Luckie
Schlüssel:
HKLM\Software\Microsoft\Windows\Currentversion\Uni nstall
Dann noch unter dem gleichen Schlüssel in HKCU kucken ...

Verwechselst du da möglicherweise was mit dem Autostart von Programmen? Den Uninstall-Schlüssel gibt es nur unter HKEY_LOCAL_MACHINE. Ich spreche jetzt zwar nur für Win 95, 98 und XP, aber das sollte auch bei NT, ME und 2000 nicht anders sein. Und zumindest für XP kann ich mit Gewissheit sagen, dass nur Admins und Hauptbenutzer Software installieren können. Und beide Benutzergruppen haben Zugriff auf HKLM. Ohne diese Rechte schlägt (bei mir) die Installation von Software fehl.

Zitat:

Zitat von janjan
Das ist mir schon bekannt, nur meiner Erfahrung nach klappt das nicht so toll wie es eigentlich sein könnte. Jedes Programm sollte sich beim installieren da eintragen, aber ob es das auch wirklich tut?

Mitnichten muss sich jedes Programm eintragen. Es gibt ein paar Systemupdates von Microsoft (das SP2 für MS-XML 3 fällt mir da z.B. ein), die zwar auch normale Installationsdateien sind, bei denen aber die Uninstall-Funktion deaktiviert ist. Damit sind sie eben nur einspielbar aber nicht entfernbar. In manchen Fällen macht das ja auch Sinn.

Wie ich anfangs schon andeutete: es ist die Aufgabe des Entwicklers, eine vernünftige Deinstallation zu planen. Wer sein Programm z.B. ohne Installer veröffentlicht, der sollte zumindest eine Möglichkeit anbieten, Registryschlüssel o.ä. beim Beenden des Programms löschen zu lassen.
Und dass man seine INIs, DLLs, usw. nicht mehr im Windows- oder im Systemordner ablegen darf, das sollte eigentlich auch bekannt sein.


Aber zurück zu einem der Themen -
Zitat:

Zitat von Dray
Ich hatte da noch die Idee die Software aus der Systemsteuerung auszulesen. geht das? und wenn dann wie?

Im Anhang findest du die alte VCL-Version meines Tools "UnInstall Secrets". Alt deshalb, weil ich mich auf die NonVCL-Version konzentriert habe. Aber zur Ansicht mag die VCL-Version reichen. Außerdem zeigt sie alle Programme an. Auch die, die in der Systemsteuerung/Software gar nicht zu sehen sind. 8)
Die NonVCL-Version des Tools gibt es übrigens in den Win32-API-Tutorials. (Damit wäre die monatliche Werbung dafür auch erledigt. :wink:)

Luckie 20. Mär 2003 11:41

Zitat:

Zitat von MathiasSimmack
Zitat:

Zitat von Luckie
Schlüssel:
HKLM\Software\Microsoft\Windows\Currentversion\Uni nstall
Dann noch unter dem gleichen Schlüssel in HKCU kucken ...

Verwechselst du da möglicherweise was mit dem Autostart von Programmen? Den Uninstall-Schlüssel gibt es nur unter HKEY_LOCAL_MACHINE. Ich spreche jetzt zwar nur für Win 95, 98 und XP, aber das sollte auch bei NT, ME und 2000 nicht anders sein. Und zumindest für XP kann ich mit Gewissheit sagen, dass nur Admins und Hauptbenutzer Software installieren können. Und beide Benutzergruppen haben Zugriff auf HKLM. Ohne diese Rechte schlägt (bei mir) die Installation von Software fehl.

War nur ein Schuß ins Blaue, ich war zu faul zu kucken und habe es einfach mal so hingeschrieben. :oops:

janjan 20. Mär 2003 11:48

Zitat:

Zitat von MathiasSimmack
Zitat:

Zitat von janjan
Auf meinem System sind viele Programme und Spiele die in der Registry oder in irgendwelchen .ini Dateien aufgeführt sind (z.b. DScaler, Quake1-3, HL,...).

Ich will nichts unterstellen, aber meine Versionen von Quake und Half-Life besitzen einen vernünftigen Installer. Quake 1 ist sogar ein noch ein DOS-Programm, dessen Ordner sich also ohne Risiko löschen lässt.

Das die Spiele nicht mehr in der Registry stehen liegt daran, dass ich ab und an mal meine SystemPartition formatiere. Da gehen dann bekanntermaßen alle Uninstall Informationen verloren. Da die Spiele auch ohne diese ganzen Sachen laufen, seh ich garnicht ein die nochmal neu zu isntallieren.

Zu dem Quake 1: Ich hab das aus einer Quake Collection die unter Windows installiert wird, unter anderem ist da auch QuakeGL dabei...

Dray 20. Mär 2003 12:06

So Leute da Ihr mir so gut Geholfen habt erst noch mal ein dickes DANKE!

Aber ich hab natürlich direkt noch ne Frage. Ich hab ja oben schon geschrieben das ich auch Hardware auslesen soll. Darauf is gefallen das die teilweise in der Registry stehen. Wisst ihr zufällig auch wo da?


P.S.: Chef is schon halbwegs glücklich das der Softwarekram schon mal funzt!

Luckie 20. Mär 2003 12:19

Zitat:

Zitat von Dray
P.S.: Chef is schon halbwegs glücklich das der Softwarekram schon mal funzt!

da warst du aber schnell. :shock: Ich hoffe mal, du hast da selbst was entwickelt und ihm nicht nur das programm vom Mathias vorgesetzt. :roll:

Dray 20. Mär 2003 12:25

Zitat:

Zitat von Luckie
da warst du aber schnell. :shock: Ich hoffe mal, du hast da selbst was entwickelt und ihm nicht nur das programm vom Mathias vorgesetzt. :roll:

Nein hab ich natürlich nicht! Ich hab das ganze natürlich abgeändert zu meinem Zwecke und einen Filter eingebaut, da das Proggi mehr ausspuckte wie nötig war. Ausserdem musste ich das ganze ja in mein Clientproggi einbinden

Trouble_Maker 20. Mär 2003 12:43

hihio...
ich hab auch grad mal den Code von Luckie ausprobiert!
Funktioniert super, doch spuckt er echt zu viel aus!
Sowas wie : {0c82904........}

wie filter ich sowas raus... weil es ja nix zum deinstallieren ist !?!

Danke

Trouble_Maker

Luckie 20. Mär 2003 13:03

Such doch in der Listbox nach "{" in einem Eintrag und löscht ihn.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz