Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Prozessor-Name auslesen ohne Adminrechte (https://www.delphipraxis.net/161318-prozessor-name-auslesen-ohne-adminrechte.html)

Stread 29. Jun 2011 00:27

Prozessor-Name auslesen ohne Adminrechte
 
Hi,
Ich möchte den Namen des Prozessors gerne herausbekommen. Mein Code funktioniert allerdings nur wenn man ihn mit Administrator Rechten benutzt.
Er greift auf die Registry zurück um dort den Namen zu holen.
Anscheinend braucht man dort Admin Rechte auch wenn man nur lesen will. (Windows 7 /XP)

Gibt es eine Möglichkeit an den Prozessornamen zu kommen ohne Adminrechte oder die Registry zu gebrauchen?

PS: Bei Windows 7 gibt es unter System eine Zuammenfassung wieviel RAM installiert ist und auch wie der Prozessor heißt. Windows bekommt dies wohl auch ohne Adminrechte.


Delphi-Quellcode:
function 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;

himitsu 29. Jun 2011 00:36

AW: Prozessor-Name auslesen ohne Adminrechte
 
Du kannst den Pfad nur ohne Schreibrechte öffnen.
TRegistry versucht es aber standarmäßig mit Schreibrechten, was dann natürlich kracht.

Hab's jetzt nicht im Kopf, aber in der OH sollte stehn, wie das geht.


PS: Hier im Forum suchenCPUID sollte auch gehn



So, allen noch eine gute Nacht ... bin dann mal weg :hi:

Thom 29. Jun 2011 00:44

AW: Prozessor-Name auslesen ohne Adminrechte
 
Delphi-Quellcode:
TRegistry.Create(KEY_READ);
//...
sollte funktionieren.

RWarnecke 29. Jun 2011 03:11

AW: Prozessor-Name auslesen ohne Adminrechte
 
So sollte es auch gehen :
Delphi-Quellcode:
function GetProzessorName: string;
var reg: TRegistry;
begin
   result:='Unbekannter Prozessor';
   reg:=TRegistry.Create;
   try
     reg.RootKey := HKEY_LOCAL_MACHINE;
     reg.OpenKeyReadOnly('Hardware\Description\System\CentralProcessor\0');
     result:=reg.ReadString('ProcessorNameString');
   finally
     reg.free;
   end;
end;

jaenicke 29. Jun 2011 06:04

AW: Prozessor-Name auslesen ohne Adminrechte
 
Das geht bei neueren Delphiversionen auch, ja. Ich würde den Rückgabewert allerdings auch auswerten:
Delphi-Quellcode:
function GetProzessorName: string;
var
  reg: TRegistry;
begin
  result := 'Unbekannter Prozessor';
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    if reg.OpenKeyReadOnly('Hardware\Description\System\CentralProcessor\0') then
      result := reg.ReadString('ProcessorNameString');
  finally
    reg.free;
  end;
end;

p80286 29. Jun 2011 10:58

AW: Prozessor-Name auslesen ohne Adminrechte
 
Zitat:

Zitat von jaenicke (Beitrag 1108763)
Das geht bei neueren Delphiversionen auch, ja.

Was ist "neuer"?
Unter D7 geht's auch.

Gruß
K-H

himitsu 29. Jun 2011 11:47

AW: Prozessor-Name auslesen ohne Adminrechte
 
Ansonsten hatte TRegistry auch noch irgendeinen ReadOnly-Property dafür.

Stread 29. Jun 2011 12:19

AW: Prozessor-Name auslesen ohne Adminrechte
 
Die Version von RWarnecke oder jaenicke funktioniert gut.

Warum wird aber bei letzter Version noch ein if..then eingebaut?

himitsu 29. Jun 2011 12:23

AW: Prozessor-Name auslesen ohne Adminrechte
 
Da man vielleicht noch prüfen sollte, ob OpenKeyReadOnly überhaupt erfolgreich war?

CCRDude 29. Jun 2011 12:39

AW: Prozessor-Name auslesen ohne Adminrechte
 
Wenn man Exceptions vermeiden will, muss man eigentlich auch noch
Code:
reg.ValueExists('ProcessorNameString')
und
Code:
reg.GetDataType('ProcessorNameString') = rdString
überprüfen.

Oder halt bewusst das Exception-Handling nutzen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.
Seite 1 von 2  1 2      

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