实现Windows开机自启动的C#代码示例
这段代码是用C#编写的,主要涉及Windows系统级别的开机自启动管理功能。具体实现了一个程序的两个操作:添加和删除开机自动启动项。以下是对代码中的关键知识点进行详细解析: 1. **`MenuStrip`点击事件处理函数**: - ` ZustoolStripMenuItem_Click` 和 `RemoveToolStripMenuItem_Click` 方法分别对应于“添加到启动”和“从启动移除”的操作。当用户选择相应的菜单项时,会执行这些方法。 2. **获取程序路径(`Application.ExecutablePath`)**: - 通过 `Application.ExecutablePath` 属性获取当前运行的可执行文件的完整路径,这是为了将应用程序的路径设置为开机启动项目的名称。 3. **注册表操作**: - 使用 `Microsoft.Win32.RegistryKey` 类来访问Windows注册表,这是一个系统级的配置存储区域。`Registry.LocalMachine` 是用来读写所有用户的本地机器注册表键。 - `loca.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")` 创建一个子键,用于存储启动项目。`Run` 键通常用于保存开机启动的应用程序。 4. **添加开机启动项(`SetValue` 方法)**: - 在 `ZustoolStripMenuItem_Click` 中,使用 `run.SetValue("kaixin",startupPath)` 将程序的路径值设置为 "kaixin",这样每次系统启动时,就会执行这个键关联的应用程序。 5. **错误处理**: - 代码中包含了异常处理机制,使用 `catch` 块捕获可能出现的异常,并通过 `MessageBox` 显示错误信息。如果在设置或删除值时遇到问题,会显示错误消息并关闭注册表。 6. **删除开机启动项(`DeleteValue` 方法)**: - 在 `RemoveToolStripMenuItem_Click` 中,调用 `run.DeleteValue("kaixin")` 从注册表中删除之前设置的 "kaixin" 项,从而取消该应用程序的开机自启动。 7. **最后的 `regset()` 函数**: - 这个函数可能用于执行一些额外的注册表操作,但代码片段中并未提供具体的实现,可能是清理注册表或进行其他相关的初始化工作。 这段代码展示了如何利用C#编程语言与Windows注册表交互,实现应用程序的开机自启动和注销功能。开发人员可以根据需要扩展这些功能,例如添加更多的判断逻辑,或者支持批量管理和用户界面的优化。
{
//获取程序执行路径..
string starupPath = Application.ExecutablePath;
//class Micosoft.Win32.RegistryKey. 表示Window注册表中项级节点,此类是注册表装.
RegistryKey loca = Registry.LocalMachine; RegistryKey run = loca.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
try {
//SetValue:存储值的名称
run.SetValue("kaixin", starupPath);
MessageBox.Show("已启用开机运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); loca.Close(); }
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }
regset();
//获取注册表状态
}
private void 停用ToolStripMenuItem_Click(object sender, EventArgs e)
{ //获取程序执行路径..
string starupPath = Application.ExecutablePath;
//class Micosoft.Win32.RegistryKey. 表示Window注册表中项级节点,此类是注册表装.
RegistryKey loca = Registry.LocalMachine; RegistryKey run = loca.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
try {
//SetValue:存储值的名称
run.DeleteValue("kaixin"); MessageBox.Show("已停止开机运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
loca.Close();
}
catch (Exception ee)
{ MessageBox.Show(ee.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }
regset();
//获取注册表状态
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 6
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦