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# string转unicode字符的实现

《C#string转unicode字符的实现》本文主要介绍了C#string转unicode字符的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录1. 获取字符串中每个字符的 Unicode 值示例代码:输出:2. 将 Unicode 值格式化

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re