Я создаю программу на С++, и я хочу, чтобы пользователи могли автоматически запускать ее в Windows. Поэтому, когда пользователь запускает свой компьютер, Windows автоматически запускает эту программу. Я читал о том, как изменить реестр или поместить его в папку автозагрузки, но что было бы лучшим «чистым» способом сделать это?
Как создать программу C++ с автоматическим запуском
Ответы (5)
Папка автозагрузки достаточно чистая.
Дает пользователю возможность удалить его при необходимости.
Есть много способов автозапуска приложения, но самые простые, наиболее распространенные и лучшие, по моему мнению, это:
- Поместите ярлык в папку автозапуска
- Добавьте запись автозапуска в реестр (Software\Microsoft\Windows\CurrentVersion\Run)
Конечный результат одинаков для обоих. Я считаю, что способ реестра выполняется раньше в процессе входа в систему, чем способ запуска, но я не уверен. В любом случае, для большинства случаев это не имеет никакого значения. Я предпочитаю реестр, но это личный вкус. Вы можете программно создавать и удалять раздел реестра или ярлык в своем приложении.
В обоих вариантах вы можете использовать либо один параметр для всех пользователей (все папки запуска пользователя или ключ HKLM в реестре), либо специфический для пользователя (папка запуска пользователя или ключ HKCR).
В общем, лучше использовать параметры для каждого пользователя, потому что вы можете быть уверены, что у вас есть права на запись в этих областях; и каждый пользователь на компьютере может иметь свою собственную настройку.
В зависимости от того, выполняете ли вы установку для всех пользователей или для каждого пользователя, поместите ее в папку автозагрузки для всех пользователей или в папку автозагрузки для каждого пользователя. Папка «Автозагрузка», которую вы видите в меню, представляет собой слияние обоих, но пользователи без прав администратора не могут удалять записи, поступающие из части «Все пользователи».
Хотя на самом деле для этого ничего не нужно делать. Пользователи могут сами скопировать ваш обычный ярлык в меню «Автозагрузка». Следовательно, любая программа может быть программой автозапуска. Совсем не обязательно быть C++.
Вы можете зарегистрировать его как службу Windows. Вы можете использовать «Qt Solutions» для простого создания приложения в качестве службы Windows.
С этим кодом вы можете это сделать
procedure TForm1.Button1Click(Sender: TObject);
var
Reg:TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True);
Reg.WriteString('Program name',ParamStr(0));
finally
Reg.Free;
end;
end;
или это:
using Microsoft.Win32;
private void AddStartUpKey(string _name, string _path) {
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true);
key.SetValue(_name, _path);
}
private void RemoveStartUpKey(string _name) {
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Micros oft\Windows\CurrentVersion\Run", true);
key.DeleteValue(_name, false);
}