![]() |
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; |
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: ![]() So, allen noch eine gute Nacht ... bin dann mal weg :hi: |
AW: Prozessor-Name auslesen ohne Adminrechte
Delphi-Quellcode:
sollte funktionieren.
TRegistry.Create(KEY_READ);
//... |
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; |
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; |
AW: Prozessor-Name auslesen ohne Adminrechte
Zitat:
Unter D7 geht's auch. Gruß K-H |
AW: Prozessor-Name auslesen ohne Adminrechte
Ansonsten hatte TRegistry auch noch irgendeinen ReadOnly-Property dafür.
|
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? |
AW: Prozessor-Name auslesen ohne Adminrechte
Da man vielleicht noch prüfen sollte, ob OpenKeyReadOnly überhaupt erfolgreich war?
|
AW: Prozessor-Name auslesen ohne Adminrechte
Wenn man Exceptions vermeiden will, muss man eigentlich auch noch
Code:
und
reg.ValueExists('ProcessorNameString')
Code:
überprüfen.
reg.GetDataType('ProcessorNameString') = rdString
Oder halt bewusst das Exception-Handling nutzen :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz