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

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{//创建硬链接文件,句柄设置为0result = 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.mzph.cn/diannao/62096.shtml

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

相关文章

问:SpringBoot核心配置文件都有啥,怎么配?

在SpringBoot的开发过程中&#xff0c;核心配置文件扮演着至关重要的角色。这些文件用于配置应用程序的各种属性和环境设置&#xff0c;使得开发者能够灵活地定制和管理应用程序的行为。本文将探讨SpringBoot的核心配置文件&#xff0c;包括它们的作用、区别&#xff0c;并通过…

【机器学习】数据集合集!

本文将为您介绍经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 privacy 更新时间&#xff1a;2024-11-26 访问地址: GitHub 描述&#xff1a; 此存储库包含 TensorFlow Privacy&#xff08;一种 Python&#xff09;的源代码 库&#xff0c;其中包…

Linux V4L2框架介绍

linux V4L2框架介绍 V4L2框架介绍 V4L2&#xff0c;全称Video for Linux 2&#xff0c;是Linux操作系统下用于视频数据采集设备的驱动框。它提供了一种标准化的方式使用户空间程序能够与视频设备进行通信和交互。通过V4L2接口&#xff0c;用户可以方便地实现视频图像数据的采…

[网安靶场] [更新中] UPLOAD LABS —— 靶场笔记合集

GitHub - c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场一个想帮你总结所有类型的上传漏洞的靶场. Contribute to c0ny1/upload-labs development by creating an account on GitHub.https://github.com/c0ny1/upload-labs 0x01&#xff1a;UPLOAD LABS 靶场初识…

SpringBoot社团管理:用户体验优化

3系统分析 3.1可行性分析 通过对本社团管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本社团管理系统采用SSM框架&#xff0c;JAVA作为开发语言&#…

uniapp内嵌的webview H5与应用通信

H5端&#xff1a; 1、找到index.html引入依赖 <script type"text/javascript" src"https://unpkg.com/dcloudio/uni-webview-js0.0.3/index.js"></script> 2、在需要通讯处发送消息 uni.postMessage({data:{code:200,msg:"处理完成&q…

org.apache.log4j的日志记录级别和基础使用Demo

org.apache.log4j的日志记录级别和基础使用Demo&#xff0c;本次案例展示&#xff0c;使用是的maven项目&#xff0c;搭建的一个简单的爬虫案例。里面采用了大家熟悉的日志记录插件&#xff0c;log4j。来自apache公司的开源插件。 package com.qian.test;import org.apache.log…

数据绑定与状态管理

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是华为公司推出的一款面向全场景的分布式操作系统。它不仅能够支持手机、平板等智能设备&#xff0c;还能够应用于智能家居、智能穿戴、车机等多种终端。为了适应多端设备的开发需求&#xff0c;华为推出了ArkUI框架&#xff0c;…

【后端面试总结】MySQL面试总结

后端的面试中数据库是一个绕不开的话题&#xff0c;而其中事务又是出镜率很高的一个知识点&#xff0c;那么事务又是由哪些关键技术组成呢&#xff0c;总结起来就是4个关键点&#xff1a;ACID 原子性&#xff1a; 定义&#xff1a; 原子性是指一个事务是一个不可分割的工作单…

2024年第15届蓝桥杯C/C++组蓝桥杯JAVA实现

目录 第一题握手&#xff0c;这个直接从49累加到7即可&#xff0c;没啥难度&#xff0c;后面7个不握手就好了&#xff0c;没啥讲的&#xff0c;(然后第二个题填空好难&#xff0c;嘻嘻不会&#xff09; 第三题.好数​编辑 第四题0R格式 宝石组合 数字接龙 最后一题:拔河 第…

matlab根据excel表头筛选表格数据

有如下表格需要筛选&#xff1a; 如果要筛选style中的A&#xff0c;color中的F2&#xff0c;num中的3。 代码如下&#xff1a; clear;clc; file_Pathstrcat(F:\csdn\,test1.xlsx); %表格路径、文件名 E1readtable(file_Path,Sheet,1); %读取表格中的字母和数字,1代表第一个…

wordpress二开-WordPress新增页面模板-说说微语

微语说说相当于一个简单的记事本&#xff0c;使用还是比较方便的。这个版本的说说微语CSS样式不兼容&#xff0c;可能有些主题无法适配&#xff0c;但是后台添加内容&#xff0c;前端显示的逻辑已经实现。可以当作Word press二开中自定义页面模板学习~ 一、后台添加说说微语模…

day05(单片机高级)PCB基础

目录 PCB基础 什么是PCB&#xff1f;PCB的作用&#xff1f; PCB的制作过程 PCB板的层数 PCB设计软件 安装立创EDA PCB基础 什么是PCB&#xff1f;PCB的作用&#xff1f; PCB&#xff08;Printed Circuit Board&#xff09;&#xff0c;中文名称为印制电路板&#xff0c;又称印刷…

图像标签格式转换

在做图像检测的时候&#xff0c;不同打标签软件得到的标签格式可能会不一样&#xff0c;此处提供lableimg&#xff08;txt格式&#xff09;和lableme&#xff08;json格式&#xff09;的互换。 json →txt import os import json import cv2 import base64 import argparsede…

【机器学习】——朴素贝叶斯模型

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

CMake Qt Debug/Release可执行文件增加图标

将logo.ico复制到CMakeLists.txt的同级目录下&#xff0c;然后新建logo.rc文件&#xff0c;里边输入如下代码 IDI_ICON1 ICON DISCARDABLE "logo.ico"CMakeLists.txt修改此处 ADD_EXECUTABLE(${ModuleName} ${KIT_SRCS} ${QRC_SRCS} ${UISrcs} ${MOC_OUTPUT} logo.…

【Android+多线程】异步 多线程 知识总结:基础概念 / 多种方式 / 实现方法 / 源码分析

1 基本概念 1.1 线程 定义&#xff1a;一个基本的CPU执行单元 & 程序执行流的最小单元 比进程更小的可独立运行的基本单位&#xff0c;可理解为&#xff1a;轻量级进程组成&#xff1a;线程ID 程序计数器 寄存器集合 堆栈注&#xff1a;线程自己不拥有系统资源&#…

自动驾驶系统研发系列—智能驾驶倒车盲区终结者:智能侧向警告与制动技术解析

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中一起航行,共同成长,探索技术的无限可能。 🚀 探索专栏:学…

Error: Invalid version flag: if 问题排查

问题描述&#xff1a; 国产化系统适配&#xff0c;arm架构的centos 在上面运行docker 启动后需要安装数据库 依赖perl 在yum install -y perl 时提示&#xff1a; “Error: Invalid version flag: if”

Git指令大全

文章目录 前言1. 初始化与配置初始化一个 Git 仓库设置 Git 用户名设置 Git 邮箱查看当前配置 2. 版本管理查看版本历史查看简洁的版本历史查看某个文件的修改历史查看文件的更改查看暂存区与工作区的区别 3. 分支管理创建新分支切换分支创建并切换到新分支查看所有分支删除本地…