Kategorie: IT

UAC a programování aplikací, které zasahují do registru - DELPHI

Dnešní článek je spíš bleskovka o problému, který jsem nedávno řešil - jednalo se o přístup aplikace k registrům pod systémem Windows XP, Vista a Win7. Ne vždy je to tak jednoduché jak se zdá...

Autor: KdoSiOdJinud | Vydáno: 19.10.2010 17:29 | Přečteno: 26803x | Komentářů: 0

Zapsání hodnot do registru v DELPHI

První důležitou věcí je, načíst si knihovnu přistupující k registrům:

uses
Registry

...dále do položky s proměnnými zavedeme práci s registry:

var
reg: TRegistry;

...a teď samotný kod pro zápis / čtení registru:

begin
reg := TRegistry.Create; // vytvori reg
reg.RootKey := HKEY_CURRENT_USER; // korenovy klic
reg.OpenKey('\software\',true); //otevre klic

reg.WriteString('cti','ahoj'); // zapise string
reg.WriteInteger('cti',123); // zapíše integer
reg.WriteBool('cti',true); // zapíše boolean

ShowMessage(reg.ReadString('cti')); // přečte string
ShowMessage(reg.ReadInteger('cti'));// přečte integer
ShowMessage(reg.ReadBool('cti')); // přečte boolean

reg.CloseKey; //zavre klic
reg.Free; // uvolni reg
end;

Program funguje na Win XP, ale na novějších ne!

Novější operační systémy Windows mají v rámci "zvyšování bezpečnosti" prazvláštní funkci. Mají "virtuální" Program Files a Registry - když do těchto míst zapisujeme bez povolení správce systému, náš zápis jde právě do onoho virtuálního prostředí. Společně se zapsáním do virtuálního prostředí by se měl vytvořit link, aby program daný zápis našel - ovšem, u některých aplikací se mi tak nědělo.

Řešením je vyvolání dialogového okna UAC a následně po odkliknutí dotazu spustit program jako "správce".

Jak dialogové okno vyvolat?

Jelikož zápis do registru potřebujeme většinou při instalaci programu, je nejednodušším řešením to nejméně pravděpodobné. Pokud se váš program jmenuje například "spustit.exe" a zapisuje do registrů, po spuštění do skutečného registru nezapíše a ani UAC nic nehlásí. Vyvolání UACu docílíme tak, že pojmenujeme náš spustitelný soubor jako

"Setup.exe"

Jak jednoduché, u ikonky programu se zobrazí štítek, že program vyžaduje povolení a po spuštění o něj skutečně zažádá - po potvrzení jsme tam, kde jsme být chtěli.

Při používání registru se zamyslete, proč vlastně programátoři microsoftu virtuální registr zavedli, určitě najdete minimálně jeden důvod - tak s registry zacházejte opatrně a rozumně. Nechť se daří

Komentáře rss

Pokud hledáte službu či máte dotaz mimo téma článku, využijte prosím sekci Nabídky / poptávky.


Nebyly přidány žádné komentáře.