Entwickler-Ecke
Dateizugriff - ProzessorName
Robii - Di 09.03.10 22:08
Titel: ProzessorName
Guten Abend, ich versuche mit einer Procedure den Prozessornamen von meinem Computer herrauszufinden. Diesen Quellcode habe ich bis jetzt :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function TForm1.GetProzessorName: string; var reg: TRegistry; begin result:='Unbekannter Prozessor'; reg:=TRegistry.Create; try reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey('Hardware\Description\System\CentralProcessor\0', false); result:=reg.ReadString('ProcessorNameString'); finally reg.free; end; end; |
Aber irgendwie ist das Result immer leer..
Wenn ich so mit dem RegistrierungsEditor nachgucke, ist der Wert aber vorhanden.
Wieso klappt dies nicht?
Lieben Gruß.
Moderiert von
Narses: Code- durch Delphi-Tags ersetztModeriert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 09.03.2010 um 21:13
Robii - Di 09.03.10 22:27
Hey leider scheitere ich an der Installation. Ich benutze Delphi 2010 und dort klappt das anscheinend nicht so ganz.
Könnt ihr mir evtl. trotzdem sagen wieso meine Procedure nicht funktioniert?
Lg
Narses - Di 09.03.10 22:30
Moin!
Robii hat folgendes geschrieben : |
| Hey leider scheitere ich an der Installation. Ich benutze Delphi 2010 und dort klappt das anscheinend nicht so ganz. |
Ja, könnte sein, dass das noch nicht Unicodesave ist. War ein Versuch. ;)
Robii hat folgendes geschrieben : |
| Könnt ihr mir evtl. trotzdem sagen wieso meine Procedure nicht funktioniert? |
Vielleicht reichen die Rechte nicht aus? Mal den Returncode von .OpenKey() ausgewertet? :nixweiss:
cu
Narses
Delete - Di 09.03.10 22:31
Welches Betriebssystem?
Welche Rechte hat der Benutzer?
Was sagen die Rückgabewerte?
Was sagt GetLastError?
Bitte erst mal Hausaufgaben machen. ;)
SvenAbeln - Di 09.03.10 22:34
Ich vermute mal du verwendest Windows Vista oder Windows 7?
Ein Normaler User hat nur ReadOnly Zugriff auf HKEY_LOCAL_MACHINE, TRegistry geht aber als Default von KEY_ALL_ACCESS aus.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function TForm1.GetProzessorName: string; var reg: TRegistry; begin result:='Unbekannter Prozessor'; reg:=TRegistry.Create(KEY_READ); try reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey('Hardware\Description\System\CentralProcessor\0', false); result:=reg.ReadString('ProcessorNameString'); finally reg.free; end; end; |
Robii - Di 09.03.10 22:37
Luckie hat folgendes geschrieben : |
Welches Betriebssystem?
Welche Rechte hat der Benutzer?
Was sagen die Rückgabewerte?
Was sagt GetLastError?
Bitte erst mal Hausaufgaben machen. ;) |
Ok, ich mache mal meine Hausaufgaben. ;)
Betriebssystem: Windows Vista.
Benutzer hat Adminrechte.
Der Rückgabewert bleibt einfach leer.
GetLastError sagt:
Ehm wie benutze ich das? ;)
Hoffe das hilft erstmal.
E.: SvenAbeln's Beitrag hat geholfen, jetzt klappt es. Danke ;)
Trotzdem wärs interessant zu wissen wie ich GetLastError verwende?
Delete - Di 09.03.10 22:43
Ich meine logischerweise nicht den Rückgabewert DEINER Funktion, sondern der Funktionen, die du aufrufst, wie zum Beispiel reg.OpenKey. Da hättest du nämlich gesehen, dass GetLastError 5 (Zugriff verweigert) liefert. Und wenn man dann noch weiß, dass der Construktor von TRegistry standardmäßig die Schlüssel zum Lesen UND Schreiben öffnet, hat man schon den Fehler gefunden.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!