在系统启动时启动程序无法正常工作

时间:2018-04-09 14:41:37

标签: c#

编辑:我是c#的新手,我完全迷失了。

我有一个程序应该在每次启动时启动。我已将其设置为当您单击复选框时,它会写入/删除注册表,代码:

private void SetStartUp()
    {
        RegistryKey rk = Registry.CurrentUser.OpenSubKey
            ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

        if (LaunchCheckBox.Checked)
        {
            rk.SetValue("SystemStartupProgram", (defaultDirectory + "\\SystemStartupProgram.exe"));
        }
        else
        {
            rk.DeleteValue("SystemStartupProgram", false);
        }
    }

where" defaultDirectory"是一个自定义设置路径。它被设置为程序本身所在的目录,例如" c:\ MyProgram \ bin \ Debug"。该程序的.exe文件位于那里。

这个代码尽我所知,因为如果我去任务管理器的启动部分,它会显示我的程序,它的位置和它的状态,这是启用。但是,该程序不会在系统启动时运行。

我有预感,它可能与我的应用程序使用的.txt文件有关。该文件位于同一目录中。如果我删除.txt文件并手动运行我的程序,它会尝试启动它但没有任何反应。也许Windows启动时找不到.txt文件,因此无法启动它?有没有办法解决这个问题?

编辑2:该程序是Windows窗体应用程序。运行时,它会打开一个表单。但是,它不会在Windows启动时显示出来。

编辑3:问题已解决,请参阅下面的答案了解详情

1 个答案:

答案 0 :(得分:0)

经过长时间的追捕,我找到了原因。这确实是我怀疑的,当程序启动时它试图寻找与我的.exe位于同一目录中的.txt文件。当你在系统启动时启动一个程序时,它看起来像是" Microsoft \ windows32",这不是我的文件所在的位置。

每当程序启动时,我将程序的目录设置为它自己的文件夹(我的情况:bin \ debug),然后才尝试读取文件。

错误正在修复,我仍然会制作它的Windows服务应用程序版本,因为这似乎是我设法谷歌的正确方法。感谢所有帮助过的人:)