Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Vista -> Registry in LOCAL_MACHINE (https://www.delphipraxis.net/88494-vista-registry-local_machine.html)

Gruber_Hans_12345 16. Mär 2007 09:52


Vista -> Registry in LOCAL_MACHINE
 
*gruml* und schon das nächste problem ....

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var
    DummyArray     : array[1..4] of Byte;
    NativeReg      : TRegistry;
    S              : String;
    Version        : integer;
    ExeName        : string;
begin
    DummyArray[1]  := 2;
    DummyArray[2]  := 0;
    DummyArray[3]  := 0;
    DummyArray[4]  := 0;

    ExeName := 'meineExe';

    NativeReg          := TRegistry.Create;
    NativeReg.RootKey  := HKEY_LOCAL_MACHINE;
    NativeReg.OpenKey('SOFTWARE\Clients\Mail', True);
    NativeReg.WriteString('', ExeName);
    NativeReg.CloseKey;
    NativeReg.OpenKey('SOFTWARE\Clients\Mail\'+ExeName, True);
    NativeReg.WriteString('', ExeName);
    NativeReg.CloseKey;
    NativeReg.OpenKey('SOFTWARE\Clients\Mail\'+ExeName+'\Protocols\mailto', True);
    NativeReg.WriteString('', 'URL:MailTo Protocol');
    NativeReg.WriteBinaryData('Edit Flags', DummyArray, 4);
    NativeReg.WriteString('URL Protocol', '');
    NativeReg.CloseKey;
    NativeReg.OpenKey('SOFTWARE\Clients\Mail\'+ExeName+'\Protocols\mailto\DefaultIcon', True);
    NativeReg.WriteString('', '"'+ExeName+'",0');
    NativeReg.CloseKey;
    NativeReg.OpenKey('SOFTWARE\Clients\Mail\'+ExeName+'\Protocols\mailto\shell\open\command', True);
    NativeReg.WriteString('', '"'+ExeName+'" -newmail "%1"');
    NativeReg.CloseKey;
    NativeReg.OpenKey('SOFTWARE\Clients\Mail\'+ExeName+'\shell\open\command', True);
    NativeReg.WriteString('', '"'+ExeName+'"');
    NativeReg.CloseKey;
    NativeReg.Free;
hab hier ein stückchen code, unter XP funkt das wunderbar

habs nun unter vista laufen ... ohne admin rechte bekomm ich normalen fehler, das er nicht schreiben darf ... alles klar, admin rechte gegeben, und jetzt läuft zwar alles ohne probs aber die registry ändert sich nicht
ändere ich es auf HKEY_CURRENT_USER um, dann schreibt ers.

Bernhard Geyer 16. Mär 2007 10:10

Re: Vista -> Registry in LOCAL_MACHINE
 
UAC aktiv? Falls ja, wirklich auch mit Admin-Rechten gestartet (Über Kontextmenu "Als Administrator ausführen)?
Ansonsten landen deine Registry-Einträge in einem Virtuallen Bereich denn nur genau diese Exe zu Gesicht bekommt.

Gruber_Hans_12345 16. Mär 2007 10:14

Re: Vista -> Registry in LOCAL_MACHINE
 
Zitat:

Zitat von Bernhard Geyer
UAC aktiv? Falls ja, wirklich auch mit Admin-Rechten gestartet (Über Kontextmenu "Als Administrator ausführen)?
Ansonsten landen deine Registry-Einträge in einem Virtuallen Bereich denn nur genau diese Exe zu Gesicht bekommt.

ja, alles standard aktiviert.

Habs mit manifest probiert (was ja jetzt funkt) und auch als Admin ausgeführt
in beiden fällen kommt die frage vom uac ob ich das programm zulassen will.

Ohne Admin Rechte, werden die schreibzugriffe nicht umgeleitet, sondern machen ja einfach einen Fehler.

aber werds mal ausprobieren, ob ichs im progrmam wieder lesen kann.

Sieht man diese virtualisierung irgendwo? (Bei den Dateien (ini) kann man ja die virtualisierungen ja einblenden lassen)

Gruber_Hans_12345 16. Mär 2007 10:27

Re: Vista -> Registry in LOCAL_MACHINE
 
also, wenn ich mit dem gleichen programm wieder lese, dann bekomme ich die werte raus, die ich geschrieben haben

nur im registry editor sehe ich die nicht.

auf was geht den diese virtualisierung?

wenn ich eine kopie von dem programm erstelle (in einen neuen ordner) bekommt dann die auch dieses virtuellen daten?
(wenn ich meine testanwendung kopiere - in neuen ordner, dann kann das auch diese geschriebenen daten lesen)

Phoenix 16. Mär 2007 10:32

Re: Vista -> Registry in LOCAL_MACHINE
 
Pack die Daten die Du da reinschreibst lieber in einer INI oder eine XML-Datei und schreib die in den Ordner ApplicationData. Da gehören die auch hin :)

Gruber_Hans_12345 16. Mär 2007 10:58

Re: Vista -> Registry in LOCAL_MACHINE
 
Zitat:

Zitat von Phoenix
Pack die Daten die Du da reinschreibst lieber in einer INI oder eine XML-Datei und schreib die in den Ordner ApplicationData. Da gehören die auch hin :)

Das ist der pfad, um mein programm als eMail programm zu registrieren, damit man von anderen andwendugnen per mailto und per mapi emails senden kann.
das wird per ini oder xml etwas schwierig ;)

Gruber_Hans_12345 16. Mär 2007 11:52

Re: Vista -> Registry in LOCAL_MACHINE
 
so, ich glaub ich habs gefunden sogar hier im forum :)

ist kein problem mit vista sondern mit 64bit ...

Registry: WOW6432NODE


[edit]also funktioniert wunderbar, sogar mein MAPI Mail Client geht unter Vista64 Bit :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr.

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