Autor Beitrag
Robii
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: Di 09.03.10 22:08 
Guten Abend, ich versuche mit einer Procedure den Prozessornamen von meinem Computer herrauszufinden. Diesen Quellcode habe ich bis jetzt :

ausblenden 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 user profile iconNarses: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 09.03.2010 um 21:13
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 09.03.10 22:15 
Moin!

Ich würde das eher per WMI machen, ist besser als per Registry. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Robii Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 09.03.10 22:30 
Moin!

user profile iconRobii hat folgendes geschrieben Zum zitierten Posting springen:
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. ;)

user profile iconRobii hat folgendes geschrieben Zum zitierten Posting springen:
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

_________________
There are 10 types of people - those who understand binary and those who don´t.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: 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.


ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236



BeitragVerfasst: Di 09.03.10 22:37 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.