C#/WPF实现应用程序的自动启动
C#/WPF实现应用程序的自动启动
原理
在 Windows 上,启动文件夹是一个特殊的文件夹,其中包含了在操作系统启动时自动运行的程序和快捷方式。将应用程序的快捷方式放在系统的启动文件夹下,开机时,就会启动快捷方式指向的应用程序。
查看启动文件夹:
-
使用组合键 Win+R 打开 "运行" 对话框。或者,您也可以通过开始菜单中的搜索栏输入 "运行",然后选择 "运行" 应用程序。
-
在 "运行" 对话框中,输入以下路径并按下 Enter 键:
Copy Codeshell:startup
-
可以看到我的启动文件夹在这里,里面有我正在开发的应用的快捷方式:
请注意,这种方法只适用于当前用户的启动文件夹。如果您希望打开全局启动文件夹(适用于所有用户),则需要使用不同的路径。全局启动文件夹的路径如下:shell:common startup
实现
using System;
using System.IO;
namespace Floai.Utils.View;
public static class AppAutoStarter
{
// 获取自动启动快捷方式的文件路径
public static string LnkFilePath
{
get
{
return Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.Startup),
"Floai.lnk");
}
}
// 禁用自动启动
public static void DisableAutoStart()
{
if (File.Exists(LnkFilePath))
{
File.Delete(LnkFilePath);
}
}
// 启用自动启动
public static void EnableAutoStart()
{
var shellType = Type.GetTypeFromProgID("WScript.Shell");
dynamic shell = Activator.CreateInstance(shellType);
var shortcut = shell.CreateShortcut(LnkFilePath);
shortcut.TargetPath = System.Windows.Forms.Application.ExecutablePath;
shortcut.WorkingDirectory = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
shortcut.Save();
}
}
首先,我们定义了一个LnkFilePath
属性。该属性使用Path.Combine()
方法将特殊文件夹路径和快捷方式文件名组合起来,以获取自动启动快捷方式的完整文件路径。在这里,我们使用Environment.GetFolderPath(Environment.SpecialFolder.Startup)
来获取Windows系统的启动文件夹路径,并将其与"Floai.lnk"文件名组合在一起,形成一个快捷方式文件的完整路径。
请注意,这种方法只适用于当前用户的启动文件夹。如果您希望打开全局启动文件夹(适用于所有用户),则需要使用不同的路径。全局启动文件夹的路径获取方式为Environment.SpecialFolder.CommonStartup
接下来,我们实现了DisableAutoStart()
方法。该方法用于禁用自动启动功能。它首先检查自动启动快捷方式文件是否存在,如果存在,则使用File.Delete()
方法将其删除。
然后,我们实现了EnableAutoStart()
方法。该方法用于启用自动启动功能。首先,我们使用Type.GetTypeFromProgID()
方法获取"WScript.Shell"类型的shellType
。这是Windows脚本宿主对象模型(Windows Script Host Object Model)的一部分,它提供了创建和操作快捷方式的功能。
接下来,我们使用Activator.CreateInstance()
方法创建了一个shell
对象,该对象是shellType
的实例。然后,我们使用shell.CreateShortcut()
方法创建了一个快捷方式对象shortcut
,并传入自动启动快捷方式的文件路径LnkFilePath
。
在创建的快捷方式对象上,我们设置了TargetPath
属性为当前应用程序的可执行文件路径System.Windows.Forms.Application.ExecutablePath
,这将指定自动启动时要运行的目标应用程序。然后,我们将WorkingDirectory
属性设置为当前应用程序域的基本路径AppDomain.CurrentDomain.SetupInformation.ApplicationBase
,这将指定程序的工作目录。最后,我们调用shortcut.Save()
方法保存快捷方式。
这样,通过调用EnableAutoStart()
方法,我们就能够创建一个快捷方式文件,并将其放置在Windows启动文件夹中。当操作系统启动时,该快捷方式将启动目标应用程序,实现自动启动的功能。
同样地,通过调用DisableAutoStart()
方法,我们可以轻松地禁用自动启动功能,只需删除自动启动内的快捷方式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)