Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Registry Wert automatisch anlegen (https://www.delphipraxis.net/205070-registry-wert-automatisch-anlegen.html)

lukdelphias 29. Jul 2020 09:16

Registry Wert automatisch anlegen
 
Hallo liebes Forum,

ich hab nochmal eine Frage zum schreiben der Registry,

ich habe mir hier eine Funktion zusammengeschrieben die ohne Probleme die Regitry verändern kann.
Delphi-Quellcode:
procedure TForm1.RegistryWrite(path: string; objekt: String; value: Integer);
var
  reg : TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CURRENT_USER; possible
    if reg.OpenKey(path ,true) then
    try
      reg.WriteInteger(objekt ,value);
    finally
      reg.CloseKey;
    end;
  finally
    reg.Free;
  end;
end;
Jetzt möchte ich den Taskmanager für eine bestimmt Zeit in der Registry sperren. Bei PCs wo der Wert DisableTaskmgr schon angelegt ist, funktioniert das mit dem Aufruf
Delphi-Quellcode:
RegistryWrite('Software\Microsoft\Windows\CurrentVersion\Policies\System', 'DisableTaskMgr', 1);
wunderbar.
Bei PCs bei den der Wert DisableTaskmgr noch nicht angeleget ist funktioniert das ganze nicht.

Wie bekomme ich es hin, dass er den Wert automatisch anlegt, wenn er noch nicht vorhanden ist?
In der procedure selbst sind die Boolean ja schon auf true gesetzt und etwas anderes finde ich bei Google leider nicht.
Vielleicht hat jemand von euch eine Idee?

Gruß

Uwe Raabe 29. Jul 2020 09:20

AW: Registry Wert automatisch anlegen
 
Auf den Policies Eintrag haben in der Regel nur Admins Zugriff - auch in HKCU.

lukdelphias 29. Jul 2020 09:21

AW: Registry Wert automatisch anlegen
 
Okay. Aber wieso funktioniert das ganze ohne Probleme solange der Wert angelegt ist?

Dalai 29. Jul 2020 09:26

AW: Registry Wert automatisch anlegen
 
Was heißt, "es funktioniert, solange der Wert angelegt ist"? Sind die Daten des Werts bereits 1? Dann muss nichts weiter geschrieben werden. Und wie schon im anderen Thread beschrieben, solltest du dir die Zugriffsrechte des Zweigs mal genauer anschauen, denn dann klärt sich auch ganz schnell, ob das Schreiben überhaupt erfolgreich sein kann.

Grüße
Dalai

lukdelphias 29. Jul 2020 09:32

AW: Registry Wert automatisch anlegen
 
Zitat:

Zitat von Dalai (Beitrag 1470657)
Was heißt, "es funktioniert, solange der Wert angelegt ist"? Sind die Daten des Werts bereits 1? Dann muss nichts weiter geschrieben werden.
Grüße
Dalai

Nein sobald der Wert angelegt ist kann ich jedenbeliebigen Wert in der Registry schreiben. Egal ob 0 oder 1 oder 982723.
Ich verstehe schon was ihr meint. Ich frag mich nur warum das ganze alles perfekt funktioniert wenn der Wert bereits besteht...

Dalai 29. Jul 2020 09:45

AW: Registry Wert automatisch anlegen
 
Ich kann's nur nochmal wiederholen: Schau dir die Zugriffsrechte des Zweigs an. In Verbindung mit den Rechten, mit denen dein dort schreibendes Programm läuft, definiert sich, ob Werte erfolgreich gesetzt oder gelöscht werden können.

Grüße
Dalai

lukdelphias 29. Jul 2020 09:48

AW: Registry Wert automatisch anlegen
 
Ok vielen Dank erstmal ich werde nochmal schauen...
Gibt es in Delphi eine Möglichkeit ein Programm als Admin zu starten um den ganzen Mist zu umgehen?

Gruß

KodeZwerg 29. Jul 2020 09:56

AW: Registry Wert automatisch anlegen
 
Zitat:

Zitat von lukdelphias (Beitrag 1470663)
Gibt es in Delphi eine Möglichkeit ein Programm als Admin zu starten

per Manifest in Resource der .exe Datei.

Ein abgespeichertes Manifest.

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    version="1.1.1.1"
    processorArchitecture="X86"
    name="Company.Exename"
    type="Win32"/>
  <description>My App Description</description>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
            <!-- Windows 10 -->
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
            <!-- Windows 8.1 -->
            <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
            <!-- Windows Vista -->
            <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
            <!-- Windows 7 -->
            <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
            <!-- Windows 8 -->
            <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
    </application>
  </compatibility>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
</assembly>

Hobbycoder 29. Jul 2020 10:08

AW: Registry Wert automatisch anlegen
 
Reicht es nicht aus in den Projektoptionen einzustellen, dass das Programm mit Administratorrechten starten soll?

KodeZwerg 29. Jul 2020 10:11

AW: Registry Wert automatisch anlegen
 
Zitat:

Zitat von Hobbycoder (Beitrag 1470668)
Reicht es nicht aus in den Projektoptionen einzustellen, dass das Programm mit Administratorrechten starten soll?

Klar, das diente nur der Veranschaulichung was Delphi im Endeffekt mit dieser Option anstellt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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