【问题标题】:C# - Application gets suspended on startup after bootC# - 启动后应用程序在启动时被挂起
【发布时间】:2019-02-26 16:14:48
【问题描述】:

我的应用程序中有一个选项可以在启动时启动。这曾经工作得很好,但现在它不再像它应该的那样工作了。当我在启动系统后立即检查任务管理器时,我可以看到应用程序启动,被 Windows 挂起和杀死。

我使用以下代码来设置注册键:

private void checkBox_startOnBoot_CheckedChanged(object sender, EventArgs e) //Update settings, set value of registery key
{
    if (checkBox_startOnBoot.Checked)
    {
        using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
        {
            key.SetValue(Application.ProductName, Application.ExecutablePath);
        }
    }
    else
    {
        using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
        {
            key.SetValue(Application.ProductName, false);
        }
    }

    Settings.Default.Start_On_Boot = checkBox_startOnBoot.Checked;
    Settings.Default.Save();
}

我在 Main() 函数中没有看到任何可能导致故障的内容:

static void Main()
{
    if (Settings.Default.Restarting)
    {
        Settings.Default.Restarted = true;
        Settings.Default.Save();
    }
    using (oneInstanceMutex = new Mutex(false, "Global\\" + appGuid))
    {
        if (!oneInstanceMutex.WaitOne(0, false)) // If app already running, but is not restarting // && restartMutex.WaitOne(0, false)
        {
            if (!Settings.Default.Restarting)
            {
                AlreadyRunning();
                return;
            }
        }


        hpt = new HookProcThread();
        hpt.Run();

        SystemEvents.PowerModeChanged += OnPowerChange;

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        mw = new MainWindow();
        if (Settings.Default.Restarted)
        {
            mw.WindowState = (FormWindowState)Settings.Default.RestartingWindowMode;
        }
        Settings.Default.Restarting = false;
        Settings.Default.Save();
        Application.Run(mw);
    }
}

因此,如果有人知道如何防止应用程序在启动时被挂起并杀死,那就太好了!

【问题讨论】:

  • 你的程序运行起来就像病毒一样,尤其是当它改变注册表时!我想 Windows Defender 或防病毒程序正在暂停它。真的,如果你想要这个功能,你应该把它安装为 Windows 服务。
  • @Liam,奇怪的是以前从未有过这个。如果我将 .exe 文件复制到 Startup 文件夹,是否有可能修复它?我还能做些什么来防止它看起来像病毒。此外,该应用程序已通过 Digicert 认证,那么 Windows 为什么会使用证书阻止它?
  • 很可能,“挂起并被杀死”只是在您的应用程序因未处理的异常而死后 Windows 进行故障转储的症状。检查事件查看器。
  • 事件日志中有什么内容吗?
  • @JeroenMoster 很棒的电话!没有看那里,但结果是找不到文件。将尝试解决这个问题,看看是否也解决了整个启动问题。

标签: c# windows boot regedit


【解决方案1】:

事实证明,有一个文件找不到。 @JeroenMostert 和 huysentruitw 都为我指出了正确的方向来查看事件查看器,这向我显示了错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多