C# 对桌面快捷方式的操作设置开机启动项

2024-08-26 11:44

本文主要是介绍C# 对桌面快捷方式的操作设置开机启动项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 首先在项目中引入Windows Script Host Object Model,引入方式如下图。

对于桌面快捷方式的修改无非就是将现有的快捷方式修改和添加新的快捷方式。

1、遍历桌面快捷方式,代码如下。

            string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);string[] files = Directory.GetFiles(desktopPath, "*.lnk");foreach (string file in files){WshShell shell = new WshShell();IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(file);Debug.WriteLine($"快捷方式名称: {Path.GetFileNameWithoutExtension(file)}");Debug.WriteLine($"目标路径: {shortcut.TargetPath}");Debug.WriteLine($"工作目录: {shortcut.WorkingDirectory}");Debug.WriteLine($"描述: {shortcut.Description}");Debug.WriteLine($"图标位置: {shortcut.IconLocation}");//Debug.WriteLine();}

 2、创建一个快捷方式,代码如下。

            // 创建WScript.Shell对象WshShell _shell = new WshShell();// 创建快捷方式IWshShortcut _shortcut = (IWshShortcut)_shell.CreateShortcut(@"C:\Users\Public\Desktop\来个快捷方式.lnk");// 设置快捷方式的属性_shortcut.TargetPath = @"C:\Program Files\ScreenToGif\ScreenToGif.exe";_shortcut.WorkingDirectory = @"C:\Program Files\ScreenToGif";_shortcut.Description = "来个快捷方式";_shortcut.IconLocation = "C:\\Program Files\\ScreenToGif\\ScreenToGif.exe,0";// 保存快捷方式_shortcut.Save();Debug.WriteLine("快捷方式已创建。");

3、设置开机启动项。

//AppDomain.CurrentDomain.BaseDirectory 获取当前程序所在文件夹//Application.Current.Shutdown(); 退出当前程序string appPath = @"C:\Program Files\ScreenToGif\ScreenToGif.exe"; // 替换为你的应用程序路径string keyName = @"Software\Microsoft\Windows\CurrentVersion\Run";RegistryKey key = Registry.CurrentUser.CreateSubKey(keyName);if (key != null){key.SetValue("来个快捷方式", appPath); // "YourAppName"是注册表项的名称key.Close();Debug.WriteLine("应用程序已设置为开机启动。");}

4、有些时候设置好桌面的快捷方式,但是不能马上显示,需要刷新一下桌面才行,下面的代码是刷新桌面的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;namespace XXXX
{public class DesktopRefurbish{/// <summary>/// 桌面刷新/// </summary>[DllImport("shell32.dll")]public static extern void SHChangeNotify(HChangeNotifyEventID wEventId, HChangeNotifyFlags uFlags, IntPtr dwItem1, IntPtr dwItem2);public static void DeskRef(){SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);}}#region public enum HChangeNotifyFlags[Flags]public enum HChangeNotifyFlags{SHCNF_DWORD = 0x0003,SHCNF_IDLIST = 0x0000,SHCNF_PATHA = 0x0001,SHCNF_PATHW = 0x0005,SHCNF_PRINTERA = 0x0002,SHCNF_PRINTERW = 0x0006,SHCNF_FLUSH = 0x1000,SHCNF_FLUSHNOWAIT = 0x2000}#endregion//enum HChangeNotifyFlags#region enum HChangeNotifyEventID[Flags]public enum HChangeNotifyEventID{SHCNE_ALLEVENTS = 0x7FFFFFFF,SHCNE_ASSOCCHANGED = 0x08000000,SHCNE_ATTRIBUTES = 0x00000800,SHCNE_CREATE = 0x00000002,SHCNE_DELETE = 0x00000004,SHCNE_DRIVEADD = 0x00000100,SHCNE_DRIVEADDGUI = 0x00010000,SHCNE_DRIVEREMOVED = 0x00000080,SHCNE_EXTENDED_EVENT = 0x04000000,SHCNE_FREESPACE = 0x00040000,SHCNE_MEDIAINSERTED = 0x00000020,SHCNE_MEDIAREMOVED = 0x00000040,SHCNE_MKDIR = 0x00000008,SHCNE_NETSHARE = 0x00000200,SHCNE_NETUNSHARE = 0x00000400,SHCNE_RENAMEFOLDER = 0x00020000,SHCNE_RENAMEITEM = 0x00000001,SHCNE_RMDIR = 0x00000010,SHCNE_SERVERDISCONNECT = 0x00004000,SHCNE_UPDATEDIR = 0x00001000,SHCNE_UPDATEIMAGE = 0x00008000,}#endregion
}

5、关闭防火墙,代码如下。

            try{ProcessStartInfo psi = new ProcessStartInfo{FileName = "netsh",Arguments = "advfirewall set allprofiles state off",UseShellExecute = false,RedirectStandardOutput = true,CreateNoWindow = true};Process process = Process.Start(psi);process.WaitForExit();Debug.WriteLine("Windows 防火墙已关闭。");}catch (Exception ex){Debug.WriteLine("关闭 Windows 防火墙时出错: " + ex.Message);}

这篇关于C# 对桌面快捷方式的操作设置开机启动项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108473

相关文章

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程