Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.12;
Скачать: CL | DM;

Вниз

Автозапуск через Реестр   Найти похожие ветки 

 
Ilshat   (2008-01-09 05:48) [0]

Собственно проблема не в Делфи, ключ реестра устанавливается прекрасно, работает, но по непонятным мне причинам на программу начинает ругаться Касперский Интернет Секьюрити 7(мониторинг реестра отключен, работает только проактивная защита). Программа пустая, есть только процедура для автозапуска.


procedure DoAppToRun(RunName, AppName: string);
var
 Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 with Reg do
 begin
   RootKey := HKEY_LOCAL_MACHINE;
   OpenKey("Software\Microsoft\Windows\CurrentVersion\Run", True);
   if ReadString(RunName) <> AppName then
     WriteString(RunName, AppName);
   CloseKey;
   Free;
 end;
end;


Все сторонние программы спокойно устанавливают себя в автозапуск... кстати и вирусы тоже... А моей почему-то нельзя. В чем хитрость?


 
Loginov Dmitry ©   (2008-01-09 07:57) [1]

Не только Касперский на такое ругается. AVG на подобный код у меня также ругался, причем без вопросов снес все exe-шки и dll-ки, где такой код увидел! К чему бы это? :)

Скорее всего не нравится строка "Software\Microsoft\Windows\CurrentVersion\Run". Попробуй сформировать ее динамически.


 
Ilshat   (2008-01-09 09:01) [2]

Моему строка нравится. Ему перестает нравиться только когда пытаешься установить себя в автозапуск, то есть ему не нравится интерпретация кода, а не его внешний вид. Тест на поиск вирусов программа проходит... А вот дальше проблема...


 
Игорь Шевченко ©   (2008-01-09 14:15) [3]

а зачем вирусам через реестр запускаться ? Незачем


 
KilkennyCat ©   (2008-01-10 00:39) [4]

Может, программа не для пользователя написана?..


 
maxistent ©   (2008-01-10 00:42) [5]

а попробуй изменить
RootKey := HKEY_LOCAL_MACHINE;
на
RootKey := HKEY_CURRENT_USER;
и

OpenKey("Software\Microsoft\Windows\CurrentVersion\Run", True);
...

на

if OpenKey("Software\Microsoft\Windows\CurrentVersion\Run", FALSE) then
...


 
PZ   (2008-01-11 14:41) [6]

Вот у меня работает нормально следующий код:
procedure TOptionFrm.AutoRunChekBoxClick(Sender: TObject);
Var
 Reg : tRegistry;
begin
 Reg := tRegistry.Create;
 Reg.RootKey := HKEY_LOCAL_MACHINE;
 Reg.OpenKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", False);
 If AutoRunChekBox.Checked then
   Reg.WriteString(Application.Title, ParamStr(0))
 else
   Reg.DeleteValue(Application.Title);
 FreeAndNil(Reg);
end;


 
KilkennyCat ©   (2008-01-11 20:32) [7]


> PZ


тоже пользователей игнорируем?


 
PZ   (2008-01-12 09:42) [8]

Вообще-то в качестве пользователя выступаю я сам. А в чем, собственно, игнорирование?


 
Loginov Dmitry ©   (2008-01-12 10:20) [9]

> Вообще-то в качестве пользователя выступаю я сам. А в чем,
> собственно, игнорирование?



> Reg.OpenKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
> False);
> If AutoRunChekBox.Checked then
>   Reg.WriteString(Application.Title, ParamStr(0))
> else
>   Reg.DeleteValue(Application.Title);


Данный код сработает только под учетной записью администратора. Если текущая учетная запись - "пользователь с ограниченными правами", то Reg.OpenKey() не сработает и Reg.WriteString() приведет к AV. Нужно проверять результат работы Reg.OpenKey(), как это сделано в [5]


 
PZ   (2008-01-12 18:56) [10]

>  [9] Loginov Dmitry ©   (12.01.08 10:20)

Спасибо за разъяснение.
Поскольку я у себя и пользователь и администратор неприятностей не возникало.



Страницы: 1 вся ветка

Текущий архив: 2008.10.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
15-1219290494
Slider007
2008-08-21 07:48
2008.10.12
С днем рождения ! 21 августа 2008 четверг


2-1220234556
Abcdef123
2008-09-01 06:02
2008.10.12
Как получить подробную информацию об ошибке рантайма?


2-1220338927
sD
2008-09-02 11:02
2008.10.12
Изменение FormStyle при создании формы


15-1219138424
MBo
2008-08-19 13:33
2008.10.12
Вот как люди, всю душу вкладывая, переменные "отчищают" ;)


2-1220506158
Denver
2008-09-04 09:29
2008.10.12
как сделать лампочку