应用程序在启动时显示在进程树中,但实际未运行

本文关键字:运行 启动 显示 进程 应用程序 | 更新日期: 2023-09-27 18:24:40

我创建了一个程序来检查系统时间,将该时间写入文件,如果1个小时过去了,则通过比较文件中的时间和当前系统时间来做一些事情。我选择了这种方法,因为我希望即使在这段时间关闭电脑,这种方法也能奏效。我已经在注册表中添加了要启动的程序,该程序在重新启动时显示在taskmanager进程选项卡中,但无法按预期工作。如果在此期间没有重新启动或关闭计算机,则它可以正常工作。请告诉我,我做错了什么。我的代码是

    static void Main(string[] args)
    {
        try
        {
        RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE''MICROSOFT''WINDOWS''CURRENTVERSION''RUN", true); // Add to registry to startup automatically in case of system shutdown or restart.
        reg.SetValue("Notifier", "'"" + Application.ExecutablePath.ToString() + "'"");
        }
        catch
        {
        MessageBox.Show("There was an error switching the registry key");
        }
        string Trigger = "time";
        DateTime _triggerDate;
        if (!File.Exists(Trigger))
        {
            using (StreamWriter sw = new StreamWriter(Trigger,true))
            {
                sw.Write(DateTime.Now.AddHours(1));
            }
        }
        using (StreamReader sr = File.OpenText(Trigger))
        {
            _triggerDate = DateTime.Parse(sr.ReadToEnd());
        }
        while (true)
        {
            if (DateTime.Now >= _triggerDate)
            {
                doSomething();
                break;
            }
            else
            {
                System.Threading.Thread.Sleep(120000); // Sleep for 2 minutes
            }
        }
    }

请澄清出了什么问题。。我还检查了注册表

应用程序在启动时显示在进程树中,但实际未运行

尝试为触发器时间文件设置一个绝对路径。如果你只是把它称为"时间",它会相对于你启动程序的工作目录保存。windows的自动启动将在另一个目录中启动,因此将找不到您的触发时间文件。