我在 Visual Studio 中为我的 C# 应用程序开发了一个启动程序(意味着:如果 PC 打开,应用程序将运行)。但如果我打开电脑,它就不会显示。我很想在注册表项中查看(按 win + r ,然后输入
regedit
,然后粘贴路径 Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run),我的应用程序仍然存在。我还尝试创建一个新项目并将其设置为启动,但它仍然相同,我尝试在任务管理器中查看启动部分和我的应用程序仍然在那里,那么为什么当我启动时它没有显示电脑。
这是要测试的新项目的源代码:
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
public Form1()
{
InitializeComponent();
reg.SetValue("MyApdp", Application.ExecutablePath.ToString());
}
}
}
非常感谢:)
我希望看到我的应用程序在启动时出现
对于声明: 是的,它显示在任务管理器的启动选项卡中,并且也已启用,但在启动影响的同一选项卡中,您可以看到它如何影响启动时间示例(高低),但在我的应用程序中,它说不测量,如果我将鼠标悬停在它上面,说重新启动你的电脑以获得影响,但我重新启动它并没有发生任何事情
是的,我的应用程序在我手动启动它时启动,如果我从应用程序中删除注册表 OpenSubKey 和 SetValue 行,它会启动,但它不会在启动时启动
要解决问题,最好注意以下几点:
1-在问题中,据说您期望“如果PC打开应用程序将运行”,但从您的代码看来,您将其设置为在当前用户的“启动”注册表项中运行.
如果您希望在计算机打开时和登录之前看到程序运行(例如防病毒程序),则应将其设计为 Windows 服务。服务可以在启动计算机时自动运行,并具有预设的用户访问权限(系统或用户帐户等)。
2- 如果您的意思是希望它在登录后运行,也可以作为另一种方法,而不是将程序的路径放在注册表中,您也可以将程序快捷方式放在所需用户的“启动”文件夹中(在下面的路径),当然,“用户名”应该替换为登录后运行程序所需的用户名。
C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
3- 在应用程序本身中使用“
Application.ExecutablePath.ToString()
”来安装自动执行是不正确的。因为,例如,如果您在“调试”模式下构建程序或将其构建为“Relerase”,则会设置不同的路径。最好将程序的最终文件传输到“Program Files”或“Program Files (x86)”内的文件夹并将其路径放在注册表中,或者在“Startup”文件夹中设置可执行程序快捷方式,
4-如果您想更专业,请使用安装程序进行。