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

 更新时间:2024年11月27日 09:24:01   作者:火星papa  
平常我们最常window桌面上点击的左下角带小箭头的文件就是快捷方式了,大家都很熟悉它,在Windows系统中,硬链接(Hard Link)是一种文件系统中的连接方式,本文给大家介绍了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中都有适合她们各自的应用场景,看我们怎么利用它来服务我们的程序。

到此这篇关于C#创建快捷方式文件和硬链接文件的方法的文章就介绍到这了,更多相关C#创建快捷方式和硬链接文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#实现根据指定容器和控件名字获得控件的方法

    C#实现根据指定容器和控件名字获得控件的方法

    这篇文章主要介绍了C#实现根据指定容器和控件名字获得控件的方法,其中包括了遍历与递归的应用,需要的朋友可以参考下
    2014-08-08
  • 基于C#实现宿舍管理系统

    基于C#实现宿舍管理系统

    这篇文章主要介绍了如何利用C#语言开发一个简易的宿舍管理系统,文中的实现步骤讲解详细,对我们学习C#有一定参考价值,感兴趣的可以了解一下
    2022-06-06
  • C#操作Excel的多种方式小结

    C#操作Excel的多种方式小结

    在项目开发过程和办公过程中,经常要遇到对Excel进行创建,读写等操作,本文为大家整理了一些C#操作Excel的方法,感兴趣的小伙伴可以了解一下
    2024-11-11
  • C#实现简单订单管理程序

    C#实现简单订单管理程序

    这篇文章主要为大家详细介绍了C#实现简单订单管理程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C#部署数据库及IIS站点

    C#部署数据库及IIS站点

    这篇文章主要为大家详细介绍了C#部署数据库及IIS站点的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • C# 如何调用python脚本

    C# 如何调用python脚本

    这篇文章主要介绍了C# 如何调用python脚本,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • C#中实现屏蔽Ctrl+C的方法

    C#中实现屏蔽Ctrl+C的方法

    这篇文章主要介绍了C#中实现屏蔽Ctrl+C的方法,在C#应用程序开发中有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • C#使用RegNotifyChangeKeyValue监听注册表更改的方法小结

    C#使用RegNotifyChangeKeyValue监听注册表更改的方法小结

    RegNotifyChangeKeyValue的最后一个参数传递false,表示以同步的方式监听,这篇文章主要介绍了C#使用RegNotifyChangeKeyValue监听注册表更改的方法小结,需要的朋友可以参考下
    2024-06-06
  • C#单位转换器简单案例

    C#单位转换器简单案例

    这篇文章主要为大家详细介绍了C#单位转换器简单案例,一个简单的winform应用程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • C#中while循环语句用法实例详解

    C#中while循环语句用法实例详解

    这篇文章主要介绍了C#中while循环语句用法,以实例形式详细分析了while语句的用法,并对return,continue,break的区别做了进一步的分析,需要的朋友可以参考下
    2014-10-10

最新评论