Registry Startup无法运行Windows应用程序

时间:2017-06-10 12:44:37

标签: c# .net winforms windows-installer registry

我创建了Windows应用程序,我想在Windows启动时启动我的应用程序 因为我在安装程序类中编写了以下代码。但是当我使用注册表检查注册表时,我没有获得注册表值。我的申请没有工作。

        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);


            try
            {
                RegistryKey add = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                add.SetValue("ToposcreenServer", "\"" + Application.ExecutablePath.ToString() + "\"");


                RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{70E25B31-99A9-474C-8990-CE28FBCEAAD1}", RegistryKeyPermissionCheck.Default);
                if (key != null)
                {
                    key.SetValue("SystemComponent", 1, RegistryValueKind.DWord);
                    key.Close();
                }
                Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
                Process.Start(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\ToposcreenServer.exe");
                GLobalclass.WriteLog("Installer Executed");
            }
            catch (Exception ex)
            {
                GLobalclass.WriteLog("Installer Error :" + ex.Message);
            }
        }

2 个答案:

答案 0 :(得分:2)

如果这是Everyone安装,那么该代码将不会写入安装用户的HKCU,因为代码是使用系统帐户凭据运行的,而不是安装用户的。

无论如何,您不需要代码来设置Run键。转到IDE中的注册表视图并添加注册表文件夹以获取HKCU中的Run键。然后添加一个带有Nama ToposcreenSaver的项目和值[TARGETDIR] my.exe,假设您的可执行文件位于文件系统视图的应用程序文件夹中。如果它需要在UAC系统上提升,它可能无论如何都不会运行。

(如果这段代码确实在安装程序类中,那么你也不清楚为什么使用Application和ExecuteablePath,因为安装程序类是从msiexec.exe进程调用的Dll,并且与之无关你想要运行的任何可执行文件。当然它是你正在安装的可执行文件的名称?)

您无需在注册表项中设置SystemComponent。在您的自定义操作运行时,该注册表项可能不存在,您应该真正做的是使用Orca打开您的MSI文件并将ARPSYSTEMCOMPONENT添加到Property表中,为其赋值1.

https://msdn.microsoft.com/en-us/library/windows/desktop/aa367750(v=vs.85).aspx

如果应用程序确实是传统的屏幕保护,这可能是最好的方法:

http://www.advancedinstaller.com/user-guide/qa-install-screensaver.html

答案 1 :(得分:0)