大家都知道,我们有很多软件都是开机时,就会自启动,今天就初步来聊聊这个自启动。
添加应用程序自启动的方式
- 使用 msconfig 添加
- 从开始菜单中添加
- 通过修改注册表添加
使用msconfig添加
-
使用该方法比较简单,通过
win + R
,输入“msconfig”,这个时候会打开一个系统配置界面如下图所示:
只需要将需要开机启动的项勾选后,点击“全部启动”就可以完成程序自启动的添加或者关闭。
如果是在win10中,需要在任务管理器中设置
选中需要启动的进程名称,右键菜单中选择启用,启用后需要重启电脑生效。
从开始菜单中添加
- 在开始菜单中,所有应用中找到启动文件夹,将需要启动的程序快捷方式拖入进去就完成了开机自启动,或者将应用程序的快捷方式拖入到对应的路径下。
具体路径包含有:
当前用户专有的启动文件夹:%appdata%\Microsoft\Windows\Start Menu\Programs\StartUp
所有用户有效的启动文件夹:%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp
通过修改注册表添加
前面有谈到通过msconfig添加自启动,聪明的人会发现,这个列表里面可能会没有找到你想设置的软件,那是因为能在这里显示的软件都是在注册表中有做定义的。具体注册表路径为:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 或 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
这种添加应用程序自启动的最常用的一种方式。
以HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run为例,我们只需要在Run目录下添加一个字符串值,并将需要启动的应用程序路径添加到键值中。如下图所示:
这样就添加完成了,重启电脑就能看到效果。通过注册表添加自启动除了这个常用的注册表外,还有其他的一些方式可以用来添加自启动,添加方式是一致的。
具体参见:
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
- HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit
添加自启动示例代码
public class AutoStartOperator
{
public static void AddToAutoStart(string strAppPath)
{
try
{
var registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
var strStartPath = registryKey.GetValue("Userinit").ToString();
var strStartPathArray = strStartPath.Split(',');
foreach (var startPath in strStartPathArray)
{
if (startPath.Equals(strAppPath))
return;
}
if (strStartPath.EndsWith(","))
{
strStartPath = $"{strStartPath}{strAppPath},";
}
else
{
strStartPath = $"{strStartPath},{strAppPath},";
}
registryKey.SetValue("Userinit", strStartPath);
}
catch (Exception)
{
}
}
public static void RemoveAutoStart(string strAppPath)
{
try
{
var registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
var strStartPath = registryKey.GetValue("Userinit").ToString();
string newValue;
if (strStartPath.EndsWith(strAppPath))
{
newValue = strStartPath.Replace(strAppPath, "");
}
else
{
newValue = strStartPath.Replace(strAppPath + ",", "");
}
registryKey.SetValue("Userinit", newValue);
}
catch (Exception)
{
}
}
}
知道以上信息,要添加到开机自启动,相信大家也有个初步的认识。针对这些开机启动的选择,我们下期再见。
本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/%E5%A6%82%E4%BD%95%E6%B7%BB%E5%8A%A0%E5%88%B0%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。