Я использую следующий код, чтобы попытаться сделать запись RunOnce:Почему я не могу сделать запись RunOnce в реестре Windows, используя TRegistry и Delphi?
program RunOnceTest;
{$APPTYPE CONSOLE}
uses
SysUtils, Registry, Windows;
var
R: TRegistry;
begin
try
WriteLn('Testing RunOnStartup.......');
R := TRegistry.Create;
try
R.RootKey := HKEY_LOCAL_MACHINE;
R.LazyWrite := False;
R.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True) ;
R.WriteString('this', 'that') ;
R.CloseKey;
finally
R.free;
end;
WriteLn('Test Finished');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
я запустить приложение, и оно выполняет.
Однако, нет входа в:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ RunOnce
в моем реестре. Нужны ли мне права администратора? Что еще мне нужно сделать?
ADDED: Я должен объяснить лучше и действительно задать вопрос о том, что я пытаюсь сделать. Я пытаюсь запустить приложение автоматически при запуске. Лоты приложений делают это, не требуя привилегий администратора. Каков нормальный способ сделать это?
Для записи в HKEY_LOCAL_MACHINE вам понадобятся права администратора, да. – martinstoeckli
Какую версию ОС вы используете? И да, вам нужны привилегии администратора. Если Vista/Win7 - попробуйте щелкнуть правой кнопкой - запустите как администратор. –
Это Windows 7/64. И поэтому я думаю, теперь мне нужно выяснить, как получить пользовательские привилегии в моем приложении, а? Отлично ..... –