Einzelnen Beitrag anzeigen

Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

Performance Counters + UAC Problem

  Alt 5. Aug 2010, 02:09
Ich benutze diesen Code um den Processor Performance Counter auszulesen (um den CPU Verbrauch pro Kern zu bekommen):
Delphi-Quellcode:
        while RegQueryValueEx( HKEY_PERFORMANCE_DATA, Processor_IDX_Str, nil, nil,
                PByte(_PerfData), @BS ) = ERROR_MORE_DATA do
        begin
            // Get a buffer that is big enough.
            INC(_BufferSize,$1000);
            BS:=_BufferSize;
            ReallocMem( _PerfData, _BufferSize );
        end;

        // Locate the performance object
        _POT := PPERF_OBJECT_TYPE(DWORD(_PerfData) + _PerfData.HeaderLength);
        for i := 1 to _PerfData.NumObjectTypes do
        begin
            if _POT.ObjectNameTitleIndex = Processor_IDX then Break;
            _POT := PPERF_OBJECT_TYPE(DWORD(_POT) + _POT.TotalByteLength);
        end;

        // Check for success
        if _POT.ObjectNameTitleIndex <> Processor_IDX then
        begin
            raise Exception.Create('Unable to locate the "Processor" performance object');
            Exit;
        end;
Es funktioniert problemlos unter WindowsXP.

Unter Vista (32 Bit) und 7 (64 Bit) bekomme ich jedoch eine Exception die aussagt dass der Performance Counter nicht gefunden wurde.

Starte ich jedoch meine exe als Administrator, dann funktioniert alles wunderbar.

Kann es denn wirklich war sein dass ich sogar für den lesenden Zugriff auf Performance Counters Admin Rechte brauche?

Geändert von Shark99 ( 5. Aug 2010 um 02:13 Uhr)
  Mit Zitat antworten Zitat