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

相关文章

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas