Я создаю установщик, используя шаблон установщика visual studio. Мне нужно добавить установленную программу для запуска для всех пользователей (я также устанавливаю ее для всех пользователей).
Я перепробовал так много подходов: добавил ярлык первичного вывода в папку «Автозагрузка пользователя». Этот подход не работает, потому что, когда я открываю вкладку автозагрузки из диспетчера задач, она есть, но ее статус отключен. Как я могу включить его по умолчанию? Я также пробовал подход с отдельной сборкой, которая переопределяет (на самом деле я пробовал много переопределений, таких как Install, OnCommited, OnAfterInstall) и записывает путь к моему exe в реестре, но это не работает, переопределение работает, но часть записи в реестр не работает. После этого я создал пример проекта, когда я делаю то же самое, и он работает, он добавляет запись в реестр. Я взял рабочий exe, запустил его во всех переопределениях (по одному) и что я получил? Это не сработало! Но когда я запускаю его вручную, это работает! Вместо запуска exe я попытался запустить Что я делаю не так? Как я могу добавить свой установленный в автозагрузку для всех пользователей? На самом деле мне нужно создать запись в HKLM, если я хочу, чтобы она работала для всех пользователей, верно? Как это можно сделать? Кто-нибудь знает какое-либо бесплатное программное обеспечение для создания установщика, который будет иметь возможность установить для всех пользователей и добавить к запуску для всех пользователей?
[RunInstaller(true)]
public class InstallerClass : System.Configuration.Install.Installer
{
public InstallerClass()
: base()
{
}
protected override void OnCommitted(IDictionary savedState)
{
Directory.SetCurrentDirectory(Path.GetDirectoryName
(Assembly.GetExecutingAssembly().Location));
string appPath = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) + $"\\App.WPF.exe";
string exePath = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) + $"\\AddToStartup.exe";
Process.Start(exePath, $"App {appPath}");
base.OnCommitted(savedState);
}
protected override void OnAfterInstall(IDictionary savedState)
{
Directory.SetCurrentDirectory(Path.GetDirectoryName
(Assembly.GetExecutingAssembly().Location));
string appPath = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) + $"\\App.WPF.exe";
string exePath = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) + $"\\App.exe";
Process.Start(exePath, $"App {appPath}");
base.OnAfterInstall(savedState);
}
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
key.SetValue("123", "456");
key.Close();
}
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
key.SetValue("123", "456");
key.Close();
}
}