C# 创建快捷方式文件和硬链接文件

news2024/11/26 18:28:45

C# 创建快捷方式文件和硬链接文件

  • 引言
    • 什么是快捷方式
    • 什么是硬链接文件
    • 硬链接与快捷方式不同
  • 实现创建快捷方式文件
  • 实现创建硬链接文件
  • 小结

引言

什么是快捷方式

  • 平常我们最常window桌面上点击的左下角带小箭头的文件就是快捷方式了,大家都很熟悉它。
  • 快捷方式是Windows提供的一种快速启动程序、打开文件或文件夹的方法。它是应用程序或文件夹、文件的快速链接。 快捷方式的一般扩展名为*.lnk。它的作用是为用户提供了访问其他文件、文件夹、应用程序或网站的快捷方式,他本身不是可执行的主题,只是一个指向其他位置的链接或引用。

什么是硬链接文件

  • 在Windows系统中,硬链接(Hard Link)是一种文件系统中的连接方式。它是将一个文件与另一个文件或目录关联起来的方式,使得多个路径指向同一个文件。这意味着任何一个硬链接都可以被看作是源文件的同源文件。

硬链接与快捷方式不同

  • 快捷方式中包含指向目标文件或目录的路径,一个源文件可以有多个快捷方式,删除任何一个或多个快捷方式对源文件没有任何影响。
  • 硬链接则是直接将目标文件添加到文件系统目录中,其索引节点与原始文件是相同的。硬链接与原始文件共享相同的数据和文件内容,即同步内容。对其中一个进行操作将反映在硬链接上。删除任何一个硬链接并不会影响原始文件本身,只有当所有硬链接和原始文件都被删除时,才会释放该文件所占用的磁盘空间。硬链接只能与同一个文件系统中的文件进行连接,如果有同时有多个进程线程查看和修改同一个问题时候,利用硬链接是个不错的方案。

–>
下面我们用C# 来实现创建快捷方式文件吧 !~~

实现创建快捷方式文件

IWshShortcut 类来至于命名空间 IWshRuntimeLibrary。
代码如下:

        /// <summary>
        /// 创建快捷方式文件
        /// </summary>
        /// <param name="directory">快捷方式所处的文件夹</param>
        /// <param name="shortcutName">快捷方式名称</param>
        /// <param name="targetPath">目标路径</param>
        /// <param name="description">描述</param>
        /// <param name="iconLocation">图标路径,格式为"可执行文件或DLL路径, 图标编号",
        /// 例如System.Environment.SystemDirectory + "\\" + "shell32.dll, 165"</param>
        /// <remarks></remarks>
        public static void CreateShortcut(string directory, string shortcutName, string targetPath, string description, string iconLocation)
        {
            //文件夹不存在,则创建它
            if (!System.IO.Directory.Exists(directory))
            {
                System.IO.Directory.CreateDirectory(directory);
            }
            string shortcutPath = $"{directory}\\{shortcutName}.lnk";
            WshShell shell = new WshShell();
            IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath);//创建快捷方式对象
            shortcut.TargetPath = targetPath;//指定目标路径
            shortcut.WorkingDirectory = System.IO.Path.GetDirectoryName(targetPath);//设置起始位置
            shortcut.WindowStyle = 1;//设置运行方式,状态分为普通、最大化、最小化【1,3,7】
            shortcut.Description = description;//设置备注
            shortcut.IconLocation = string.IsNullOrEmpty(iconLocation) ? targetPath : iconLocation;//设置图标路径
            shortcut.Save();//保存快捷方式
        }

实现创建硬链接文件

这里我使用调用windows自带的的C++接口CreateHardLink(),它引用于系统动态库"Kernel32.dll"。
代码如下:

        [DllImport("Kernel32.dll", CharSet = CharSet.Unicode)]
        public extern static bool CreateHardLink (string lpFileName, string lpExistingFileName, IntPtr lpSecurityAttributes);
         
        /// <summary>
        /// 创建硬链接文件
        /// </summary>
        /// <param name="linkNamePath">链接路径</param>
        /// <param name="sourceNamePath">源文件路径</param>
        public static bool CreateHardLinkFile(string linkNamePath,string sourceNamePath)
        {
            bool result = false;
            // 删除目标文件(如果存在)
            if (System.IO.File.Exists(linkNamePath))
            {
                System.IO.File.Delete(linkNamePath);
            }
            try
            {
               //创建硬链接文件,句柄设置为0
                result = CreateHardLink(linkNamePath, sourceNamePath, IntPtr.Zero); 
            }
            catch(Exception ex)
            {
                Console.WriteLine("CreateHardLinkFile error " + ex.ToString());
            }

            if (result)
            {
                Console.WriteLine($"{linkNamePath}硬链接创建成功!");
            }
            else
            {
                Console.WriteLine($"{linkNamePath}硬链接创建失败!");
            }
            return result;
        }

小结

无论是快捷方式还是硬链接文件,在windows和Linux中都有适合她们各自的应用场景,看我们怎么利用它来服务我们的程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echarts4r 教程2:Advanced

❝ 写在前面 本文为 R 语言 echarts4r 包的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。软件可能随时更新&#xff0c;建议配合官方文档一起阅读。推荐先按顺序阅读往期内容&#xff1a; 1. echarts4r 教程1&#xff1a…

JSON 性能测试 - WastJson 性能也很快

WAST 是一个高性能 Java 工具集库包&#xff0c;包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. WastJson 无论是小中大文本各种数据类型等性能都没有明显的短板&#xff0c;除了推广外可以说是六边形战士&#xff0c;更多测试参考 wast-jmh-test: wast性能测试 (并非所…

DICOM图像处理:深入解析DICOM彩色图像中的Planar配置及其对像素数据解析处理的实现

引言 在DICOM(Digital Imaging and Communications in Medicine)标准中,彩色图像的存储与显示涉及多个关键属性,其中**Planar Configuration(平面配置)**属性(标签 (0028,0006))尤为重要。当遇到彩色DICOM图像在浏览时被错误地分割为9张小图,而实际应显示为一…

django authentication 登录注册

文章目录 前言一、django配置二、后端实现1.新建app2.编写view3.配置路由 三、前端编写1、index.html2、register.html3、 login.html 总结 前言 之前&#xff0c;写了django制作简易登录系统&#xff0c;这次利用django内置的authentication功能实现注册、登录 提示&#xff…

数字图像处理(4):FPGA中的定点数、浮点数

&#xff08;1&#xff09;定点数&#xff1a;小数点固定在数据的某一位置的数&#xff0c;可以分为定点整数和定点小数和普通定点数。定点数广泛应用于数字图像处理&#xff08;图像滤波、图像缩放&#xff09;和数字信号处理&#xff08;如FFT、定点卷积&#xff09;中。 定…

uniapp接入高德地图

下面代码兼容安卓APP和H5 高德地图官网&#xff1a;我的应用 | 高德控制台 &#xff0c;绑定服务选择《Web端(JS API)》 /utils/map.js 需要设置你自己的key和安全密钥 export function myAMap() {return new Promise(function(resolve, reject) {if (typeof window.onLoadM…

三种蓝牙架构实现方案

一、蓝牙架构方案 1、hostcontroller双芯片标准架构 手机里面包含很多SoC或者模块&#xff0c;每颗SoC或者模块都有自己独有的功能&#xff0c;比如手机应用跑在AP芯片上&#xff0c;显示屏&#xff0c;3G/4G通信&#xff0c;WiFi/蓝牙等都有自己专门的SoC或者模块&#xff0…

下载并安装Visual Studio 2017过程

一、下载 1、下载链接 下载链接&#xff1a;官方网址 先登录 往下滑找到较早的下载 2、进行搜索下载 或者直接点击&#x1f517;网站跳转 3、确认系统信息进行下载 二、安装 下载完成后右键使用管理员身份运行 1、点击同意后安装 2、若报错—设置失败 打开控制面板-&g…

1-golang_org_x_crypto_bcrypt测试 --go开源库测试

1.实例测试 package mainimport ("fmt""golang.org/x/crypto/bcrypt" )func main() {password : []byte("mysecretpassword")hashedPassword, err : bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)if err ! nil {fmt.Println(err)…

卷积神经网络学习记录

目录 神经网络基础定义&#xff1a; 基本组成部分 工作流程 卷积层&#xff08;卷积定义&#xff09;【CONV】&#xff1a; 卷积层&#xff08;Convolutional Layer&#xff09; 特征提取&#xff1a;卷积层的主要作用是通过卷积核&#xff08;或滤波器&#xff09;运算提…

Java安全—JNDI注入RMI服务LDAP服务JDK绕过

前言 上次讲到JNDI注入这个玩意&#xff0c;但是没有细讲&#xff0c;现在就给它详细地讲个明白。 JNDI注入 那什么是JNDI注入呢&#xff0c;JNDI全称为 Java Naming and Directory Interface&#xff08;Java命名和目录接口&#xff09;&#xff0c;是一组应用程序接口&…

设计模式之 模板方法模式

模板方法模式是行为型设计模式的一种。它定义了一个算法的骨架&#xff0c;并将某些步骤的实现延迟到子类中。模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。 模板方法模式的核心在于&#xff1a; 封装算法的骨架&#xff1a;通过父类中的模板方…

学习threejs,使用设置bumpMap凹凸贴图创建褶皱,实现贴图厚度效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshPhongMaterial高…

日常开发记录-正确的prop传参,reduce搭配promise的使用

日常开发记录-正确的prop传参&#xff0c;reduce搭配promise的使用 1.正确的prop传参2.reduce搭配promise的使用 1.正确的prop传参 一般会的父组件传参子组件 //父组件 <A :demodata.sync"testData" :listData.sync"testData2"></A> data ()…

RedHat 10 Beta Install

RedHat 10 beta 前言 Red Hat Enterprise Linux 10.0 Beta 附带内核版本 6.11.0,该版本为以下架构提供最低要求版本支持(括号中注明) AMD 和 Intel 64 位架构(x86-64-v3)64 位 ARM 架构(ARMv8.0-A)IBM Power Systems,小端(POWER9)64 位 IBM Z (z14)RHEL 安装程序的主…

泥石流灾害风险评估与模拟丨AI与R语言、ArcGIS、HECRAS融合,提升泥石流灾害风险预测的精度和准确性

目录 第一章 理论基础 第二章 泥石流风险评估工具 第三章 数据准备与因子提取 第四章 泥石流灾害评价 第五章 HECRAS软件的应用 第六章 操作注意事项与模型优化 泥石流灾害的频发与严重后果&#xff0c;已成为全球范围内防灾减灾工作的重大挑战。随着科技的不断进步&…

android 音效可视化--Visualizer

Visualizer 是使应用程序能够检索当前播放音频的一部分以进行可视化。它不是录音接口&#xff0c;仅返回部分低质量的音频内容。但是&#xff0c;为了保护某些音频数据的隐私&#xff0c;使用 Visualizer 需要 android.permission.RECORD_AUDIO权限。传递给构造函数的音频会话 …

汽车HiL测试:利用TS-GNSS模拟器掌握硬件性能的仿真艺术

一、汽车HiL测试的概念 硬件在环&#xff08;Hardware-in-the-Loop&#xff0c;简称HiL&#xff09;仿真测试&#xff0c;是模型基于设计&#xff08;Model-Based Design&#xff0c;简称MBD&#xff09;验证流程中的一个关键环节。该步骤至关重要&#xff0c;因为它整合了实际…

基于Boost库的搜索引擎

本专栏内容为&#xff1a;项目专栏 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;基于Boots的搜索引擎 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f339;&#x1f339;关注我带你学习编程知识…

二叉树oj题解析

二叉树 二叉树的最近公共祖先什么是最近公共祖先&#xff1f;leetcode中求二叉树中最近公共祖先解题1.解题2. 根据二叉树创建字符串 二叉树的最近公共祖先 什么是最近公共祖先&#xff1f; 最近的公共祖先指的是这一棵树中两个节点中深度最大的且公共的祖先节点就是最近祖先节…