我有一个程序应该在每次启动时启动。我已将其设置为当您单击复选框时,它会写入/删除注册表,代码:
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:问题已解决,请参阅下面的答案了解详情
答案 0 :(得分:0)
经过长时间的追捕,我找到了原因。这确实是我怀疑的,当程序启动时它试图寻找与我的.exe位于同一目录中的.txt文件。当你在系统启动时启动一个程序时,它看起来像是" Microsoft \ windows32",这不是我的文件所在的位置。
每当程序启动时,我将程序的目录设置为它自己的文件夹(我的情况:bin \ debug),然后才尝试读取文件。
错误正在修复,我仍然会制作它的Windows服务应用程序版本,因为这似乎是我设法谷歌的正确方法。感谢所有帮助过的人:)