Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Автозапуск в реестре. [D7, XP]


AlexeyIII ©   (2010-03-31 09:29:00) 

Здравствуйте. Объясните пожалуйста непонятную мне ситуацию. Нужно добавить программу в автозапуск. Использую ветку реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Она ведь для этого и предназначена?
Пишу в нее так:

Reg:=TRegIniFile.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
Reg.OpenKey('Software',true);
Reg.OpenKey('Microsoft',true);
Reg.OpenKey('Windows',true);
Reg.OpenKey('CurrentVersion',true);
Reg.OpenKey('Run',true);
Reg.WriteString('mycoolproga',Application.ExeName);
Reg.CloseKey;
Reg.Free;


При запуске выдает:   Failed to set data for 'mycoolproga' и ничего не пишет. Если делать так:

Reg := TRegistry.Create;
try
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False);
  Reg.WriteString('mycoolproga',Application.ExeName);  
  Reg.CloseKey;
finally
   Reg.Free;
inherited;
end;  

То происходит тоже самое. Так же и если писать в HKLM
Я на машине под учеткой админа. D7 WinXPSP3
Подскажите плис, что происходит?


Цукор5   (2010-04-01 17:01:00) [1]

Я так делал :


if CheckBox1.Checked then
  AddShortcut(GetAutorunLinkPath) else ...
//
procedure AddShortcut(const Path: string);
begin
 if not FileExists(Path) then
 begin
   CreateLink(Application.ExeName, Path, sDescr);
 end;
end;

procedure CreateLink(
 const Path: string;
 const LinkPath: string;
 const Description: string);
var
 Link: IShellLink;
begin
 Link := CreateComObject(CLSID_ShellLink) as IShellLink;
 OleCheck(Link.SetPath(PChar(Path)));
 OleCheck(Link.SetDescription(PChar(Description)));
 OleCheck((Link as IPersistFile).Save(PWideChar(WideString(LinkPath)), True));
end;

function GetAutorunLinkPath: string;
begin
 Result := IncludeTrailingPathDelimiter(GetSpecialFolder(CSIDL_STARTUP))
   + sName;
end;


Anatoly Podgoretsky   (2010-04-01 14:17:00) [2]

> GrayFace  (01.04.2010 13:29:07)  [7]

Ручками, только так, но если и здесь К встрянет, то сделать ему харакири. Нафиг нужна программа с подлянками. Есть же много нормальных программ, в том числе и бесплатных.


GrayFace   (2010-04-01 13:29:00) [3]

AlexeyIII   (31.03.10 9:29)
Reg.OpenKey('Software',true);
Reg.OpenKey('Microsoft',true);
Reg.OpenKey('Windows',true);
Reg.OpenKey('CurrentVersion',true);
Reg.OpenKey('Run',true);


Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true);

Плохиш ©   (31.03.10 14:27) [6]
Давить дерьмопрогу.

Каспера. Добавление в автозапуск можно делать и культурно, в настройках.


Плохиш   (2010-03-31 14:27:00) [4]


> Нужно добавить программу в автозапуск.

Давить дерьмопрогу.


KSergey   (2010-03-31 11:48:00) [5]

> Дмитрий Белькевич   (31.03.10 11:08) [4]

Кто виноват?!


Дмитрий Белькевич   (2010-03-31 11:08:00) [6]

Я знал, я знал! Это всё глюки каспера, делфи и винды.


Игорь Шевченко   (2010-03-31 10:58:00) [7]

AlexeyIII   (31.03.10 09:40) [1]

Во падла


Anatoly Podgoretsky   (2010-03-31 09:49:00) [8]

> AlexeyIII  (31.03.2010 09:40:01)  [1]

Во падла.


AlexeyIII   (2010-03-31 09:40:00) [9]

Всем спасибо. Разобрался:)
Оказывается Касперский втихаря блокирует запись в ветки автозапуска.


Наверх

Титульная страница Поиск, карта сайта Написать письмо