首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法在不使用COM的情况下在C#中以编程方式遵循Windows文件系统快捷方式?

在C#中,可以使用P/Invoke(Platform Invocation Services)来调用Windows API函数,从而以编程方式遵循Windows文件系统快捷方式。

以下是一个示例代码,演示如何在C#中使用P/Invoke调用Windows API函数来创建一个快捷方式:

代码语言:csharp
复制
using System;
using System.Runtime.InteropServices;

public class Shortcut
{
    [DllImport("kernel32.dll")]
    static extern uint GetShortPathName(string lpszLongPath, StringBuilder lpszShortPath, uint cchBuffer);

    [DllImport("Shell32.dll")]
    static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, uint dwFlags, StringBuilder pszPath);

    public static string GetShortcutPath()
    {
        const int CSIDL_COMMON_STARTMENU = 0x16;
        const int MAX_PATH = 260;
        StringBuilder commonStartMenuPath = new StringBuilder(MAX_PATH);
        SHGetFolderPath(IntPtr.Zero, CSIDL_COMMON_STARTMENU, IntPtr.Zero, 0, commonStartMenuPath);
        string commonStartMenu = commonStartMenuPath.ToString();
        string shortcutPath = System.IO.Path.Combine(commonStartMenu, "My Shortcut.lnk");
        return shortcutPath;
    }

    public static string GetShortcutTargetPath(string shortcutPath)
    {
        IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
        IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortcutPath);
        return shortcut.TargetPath;
    }
}

在这个示例中,我们使用了两个Windows API函数:GetShortPathNameSHGetFolderPathGetShortPathName函数可以将长路径转换为短路径,而SHGetFolderPath函数可以获取特定文件夹的路径。我们使用这些函数来创建一个快捷方式,并获取快捷方式的目标路径。

需要注意的是,在使用P/Invoke调用Windows API函数时,必须使用正确的参数类型和返回值类型,否则可能会导致程序崩溃或其他不可预测的错误。在这个示例中,我们使用了StringBuilder类型来传递字符串参数,并使用IntPtr类型来传递句柄参数。

最后,需要注意的是,在使用P/Invoke调用Windows API函数时,必须在程序中引用相应的DLL文件,否则会导致程序无法找到相应的函数。在这个示例中,我们引用了kernel32.dllShell32.dll这两个DLL文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET 实现 NTFS 文件系统硬链接 mklink J(Junction)

我们知道 Windows 系统 NTFS 文件系统提供了硬连接功能,可以通过 mklink 命令开启。如果能够通过代码实现,那么我们能够做更多有趣事情。...本文提供使用 .NET/C# 代码创建 NTFS 文件系统硬连接功能(目录联接)。 目录联接 管理员权限启动 CMD(命令提示符),输入 mklink 命令可以得知 mklink 用法。...我们本次要用 .NET/C# 代码实现是 /J 目录联接。实现效果像这样: 这些文件夹带有一个“快捷方式角标,似乎是另一些文件夹快捷方式一样。...但这些与快捷方式区别在于,应用程序读取路径时候,目录联接会成为路径一部分。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必相同许可发布。

24240

比较 Windows 上四种不同文件(夹)链接方式(NTFS 硬链接、目录联接、符号链接,和大家熟知快捷方式

mklink 选项有很多种,但你可能在其他文章难以找到对这些不同选项不同效果和使用限制准确和统一描述。本文将介绍 Windows 系统中所有的链接方式,它们优缺点、使用条件和坑。...有关使用 .NET/C# 来创建目录联接方法,可以阅读我另一篇博客: .NET 实现 NTFS 文件系统硬链接 mklink /J(Junction) - walterlv 快捷方式 快捷方式是一个单纯...额外坑 如果你开始菜单里面有快捷方式指向了一个目录联接(Junction Point)文件,那么 Windows 10 操作系统更新后这个快捷方式便会消失。.../scoop 一般来说,阅读本文应该就理解了 mklink 正确用法,也不应该会出现我另一篇博客情况: 解决 mklink 使用各种坑(硬链接,软链接/符号链接,目录链接) - walterlv...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必相同许可发布。

1.4K30

Ubuntu 操作教程

但是一般我们使用 Linux 都是命令行下进行操作,所有的操作我们都可以通过输入命令来完成,绝大多数情况使用命令行来操作 Linux 系统比通过 GUI 下操作效率高很多,虽然说我们使用 Ubuntu...3.1.3 快捷键打开终端 这是个比较快捷方便方法:使用快捷方式打开终端,快捷方式为”Ctrl+Alt+T”,使用快捷方式可在绝大多情况下直接唤出 Ubuntu 终端(无论你是浏览器、文件管理器、...Ubuntu 树状结构表示文件夹与文件,没有盘符概念。...Ubuntu 目录遵循 FHS 标准(Filesystem Hierarchy Standard,文件系统层次标准)。...它定义了文件系统目录、文件分类存放原则、定义了系统运行所需最小文件、目录集合,并列举了遵循这些原则例外情况及其原因。

2.1K40

文件监控程序V2.0改进版(网站防挂马好手)

前言 技多不压身,多掌握几种不同编程语言,不但有助于开拓我们视野,还可以让我们工作时,自己写一些小程序来帮我们减少工作量。...之前一直琢磨,有没有一个好方式,能够代替人工去监控网站目录文件,一旦出现webshell,就自动进行隔离呢。 之前写了个小工具,但是界面有点小气。...处理完这些问题后,有一个核心问题,线程占用情况。...也就是说,windows文件系统,你创建一个文件时,会触发created和changed两种操作,你修改文件内容时,也同样会触发这两个操作,这样就会冲突了。...我问过好多C#大牛,都说不好解决,最好办法,是用C++来写,通过底层方式来处理,但是坑是,我还没学C++,C#也是才学了2个月吧,如果这样就放弃了,那整个程序就白写了。。

1.6K50

Windows 上如何在启动程序时单独为这个程序指定环境变量,而不需要编写任何代码或脚本

有些程序没有内置提供代理功能,但遵循环境变量设置代理。如果我们能有办法仅为这个特定程序设置环境变量,那么我们就可以不开启全局代理情况下单独为这样程序开启代理。...> set HTTPS_PROXY=http://127.0.0.1:7778 > "Unity Hub.exe" 单独为程序设置环境变量方法 如果,我们能用一句话就完成上面的三句命令,那么就可以直接在快捷方式设置这个程序代理了...这里内层引号则是为了让 cmd 代理执行命令部分每个参数不会被空格分隔 cmd ,&& 用来连接两个命令 快捷方式 如果平时是通过快捷方式来启动程序,那么只需要编辑此快捷方式属性,将目标改为上面的命令即可...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必相同许可发布。

75640

IE浏览器主页被劫持,如何解决主页被篡改问题?

一般情况下,浏览器主页被篡改情况分为三种: 1、注册表篡改IE浏览器 2、浏览器快捷方式篡改(浏览器主页被恶意锁定) 3、注册表篡改三方浏览器 废话不多说,直接进入今天正题:如何去解决掉它呢?...解决办法:【IE浏览器为例】 首先我们需要去查看我们电脑本身注册表是否有被修改: 查看注册表信息有没有被修改,如没有被修改,则非此种类型,跳过此种方法。...以上部分内容来源:http://www.baiwanzhan.com/site/t128119/ ---- 2、exe程序快捷方式查看 此种则是通过修改exe程序快捷方式来实现锁定主页,我们可以通过...当然,我们也可以桌面快捷方式鼠标右键查看属性,之后也可以定位此程序所处位置,然后观察其快捷方式属性是否被修改过。 ? ?...如果接受不了重装系统,且以上办法都处理不了的话,建议使用以下方法: 自行新建快捷方式,修改属性。前面有介绍过: ? ? ? ? 最后,我们可以给劫持主页网址添加黑名单: ? ? ?

18.8K21

Visual Studio 2005 IDE 技巧和窍门

不过,有了 C# 2.0、ASP .NET 2.0、Windows Workflow Foundation、Windows Presentation Foundation 和 Windows Communication...在下表,我列出了自己最喜欢使用一些快捷方式。 键盘快捷方式 命令 F7 设计视图和代码视图之间切换。 F9 切换断点。 F12 转到变量、对象或函数定义。...工具提示显示快捷方式 您可以实际指定环境提示信息显示快捷方式,将鼠标移到工具栏命令上方时可显示相应提示信息。转到“工具”>“自定义. . .”,确保选中“屏幕提示显示快捷键”选项。...这会显示代码段选取器,使用它可以浏览适用于当前编程语言所有代码段以及选择要插入代码段。这种插入代码段方法对于 C# 和 Visual Basic 均有效。... C# 插入代码段 从个人角度将,最令人兴奋代码段功能部分是,您可以为个人使用而创建自己代码段,也可以将其分享给其他同行使用。当然,您也可以下载其他开发人员创建好代码段。

2.1K40

Windows使用ROS机器人操作系统全面资料汇总

接收 创建ROS命令窗口快捷方式 为了Windows使用ROS,需要在每个命令窗口中调用ROS设置脚本。为了将来不会忘记,使用自动执行此操作ROS快捷方式将很有帮助。...为Visual Studio创建一个管理命令行快捷方式: 右键单击Windows资源管理器文件夹,选择“新建”>“快捷方式快捷方式路径,根据上面安装Visual Studio,从以下选项复制突出显示命令行...选择“快捷方式”选项卡(如果尚未选择)。 按下[进阶]按钮 检查按钮“管理员身份运行”。 “高级属性”对话框上按“确定”。 “ ROS属性”快捷方式对话框上按“确定”。...对于老师来说,它很方便地基于处理编程环境,因此学习该环境中进行编程学生将熟悉Arduino IDE工作方式。...欧洲研究部 -我们财团成员身份为他们提供专业知识 开始使用遵循以下步骤熟练掌握Webots: Webots中学习3D导航: Viewpoint Control [在线模拟]。

2.3K31

.NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?

编程语言,是人与机器沟通表达方式。不同编程语言,其侧重点不同。有的编程语言是为了科学计算而开发,所以其语法和功能更偏向于函数式思想。...通俗来说,虽然c#和vb是两个不同语言,但此处c#类可以vb当做自家写类一样正常使用。..."不明确,这是因为vb对类名是区分大小写。...[0c7c70b85b4233a2a181e4220cef107d.png] 那么有没有那种特殊情况,比如我通过反射技术来访问该程序集中,当前语言并不拥有的类型时会发生什么情况呢?...NET框架组成定义了异常类型系统,在编译器角度,所有catch捕获异常都必须继承自System.Exception,如果你要调用一个 由遵循此规范语言 抛出其它类型异常对象(C++允许抛出任何类型异常

90341

C# 基础精讲】C# 开发环境搭建(Visual Studio等)

安装C#开发环境是开始学习和使用C#编程第一步。...根据安装程序提示完成安装。 步骤4:启动Visual Studio 安装完成后,可以Windows开始菜单中找到Visual Studio快捷方式,启动它。...第一次启动时,可能需要进行一些初始设置,例如选择主题、安装推荐插件等。根据个人喜好和需要进行设置。 步骤5:创建第一个C#项目 Visual Studio,选择 “创建新项目”。..."创建新项目"对话框,选择"C#",然后选择您希望创建C#项目类型,例如控制台应用程序、Windows窗体应用程序等。在学习 C# 基础阶段,所以这里就选择了简单控制台应用。...它们也是很好选择,特别是对于轻量级和跨平台需求。 现在您已经成功安装了C#开发环境,可以开始学习和编写C#程序啦!祝您在C#编程学习和实践取得成功!

77530

80×86汇编小站站长简介-2014年08月23日

[人生格言] 1] 一生都用头脑而不是情绪解决问题 2] 只有偏执狂才会成功 3] 最困难时都要保持一份幽默感 4] 吾生也有涯,而知也无涯,有涯随无涯,殆已 [简历] 常用网名:.../Windows系统磁盘数据安全 项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测 [我个人自传] 本人出生于1981年, 狮子座. 30多年时间,...其实也有破纪录情况, 中考数学满分, 物理差4分满分, 化学差2分满分…… 高中时, 又一度被老师误认为是最有希望上大学学生, 因为高1时候一度保持全班前10名佳绩, 也因为经常做物理难题时候偏偏全班就我一个人做..., 通过本书学习,您将会掌握大量对你以后从事职业软件开发有很大帮助编程学习方式以及技巧, 并最终为阅读由微软技术大师Jeffrey Richter编著Windows核心编程”打开一条宽阔大路....产品主页: http://www.x86asm.com/KU/index.html RDD磁盘整理 由于Windows文件系统NTFS和FAT32设计框架小小缺陷, 导致Windows系统下数据或者文件长期频繁使用时出现碎片状

36530

80×86汇编语言_站长窝

[人生格言] 1] 一生都用头脑而不是情绪解决这个问题 2] 仅仅有偏执狂才会成功 3] 最困难时都要保持一份幽默感 4] 吾生也有涯,而知也无涯,有涯随无涯,殆已 [简历] 经常使用网名.../Windows系统磁盘数据安全 项目经历: 磁盘性能优化/文件系统数据恢复/文件信息採集/敏感文件监測跟踪/网络安全检測 [我个人自传] 本人出生于1981年, 狮子座. 30多年时间,...事实上也有破纪录情况, 中考数学满分, 物理差4分满分, 化学差2分满分…… 高中时, 又一度被老师误觉得是最有希望上大学学生, 由于高1时候一度保持全班前10名佳绩, 也由于常常做物理难题时候偏偏全班就我一个人做..., 通过本书学习,您将会掌握大量对你以后从事职业软件开发有非常大帮助编程学习方式以及技巧, 并终于为阅读由微软技术大师Jeffrey Richter编著Windows核心编程”打开一条宽阔大路...产品主页: http://www.x86asm.com/KU/index.html RDD磁盘整理 因为Windows文件系统NTFS和FAT32设计框架小小缺陷, 导致Windows系统下数据或者文件长期频繁使用时出现碎片状

25620

教你如何开发不可检测C#、C++反向Shell

这份代码所要做事情游走于“恶意”与“合法”之间,但是Windows Defender检测为“无威胁”。当你运行这个文件之后,Shell将会在5秒钟之后“静默模式”打开。 ?...检测报告:【点击阅读原文获取】 使用代理凭证通过网络开启C#反向Shell 研究如何利用代理凭证并通过互联网从一个内部企业网络打开反向Shell时,我开发出了下列代码: 1、 结合peewpw脚本没有管理员权限情况下从凭证管理器中导出代理凭证...当然了,Windows Defender和其他企业级AV解决方案都无法检测这种攻击方式。...运行命令之后,PS将会下载上述两份文件,然后存储文件系统。接下来,它们会使用Microsoft.Workflow.Compiler.exe来实时编译C#代码,并开启反向Shell。...这个Excel文件并不会被检测为恶意文件,而且能够触发任何警报情况下打开反向Shell。 ? ? ? VirusTotal检测结果 ?

1.9K30

cvte春招一面二面终面面经(已通过终面)

本人背景:渣渣二本,渣渣acmer 应聘windows应用开发,应届生 今天晚上hr打电话跟我说:面试通过,邀请我参加现场签约,可惜31号有比赛就没办法去了QAQ 一面:   说一下你印象最深项目...怎么学习,搜索工具? 刚才你提到C#,用框架是?去过国外论坛吗? 我这里是前台界面和后台算法开发,你觉得你适合哪一种? 结构体和类区别? 说相同点。然后不同点 栈和队列,栈能模拟队列吗?...动态数组说一下,还有扩容机制 模版使用过吗?了解泛型编程吗? vector和list区别,各用在哪里? 空类成员函数有几个? 老问题:你有什么想问吗? 二面: 你怎么学习?...是不是过于乐观了..可能是习惯了吧﹏) 面试方面(评价一下一面二面表现吧,打个分,扣分点主要是) 生活方面(家庭情况,爸妈观点和你不一样时会遵循他们意见吗,对你影响最深那个人,他们对你工作怎么看...一种误解,实际上竞赛转开发十分简单 对于windows开发未来发展,有没有考虑过?但行好事,莫问前程。 作者:樱花落舞 本文来源于牛客网

869110

C#.NET.NET Core定时任务调度方法或者组件有哪些--Timer,FluentScheduler还是...

原文由Rector首发于 码友网 之 《C#/.NET/.NET Core应用程序编程实现定时任务调度方法或者组件有哪些,Timer,FluentScheduler,TaskScheduler,Gofer.NET...比 Windows 任务计划提供更细触发粒度 良好可扩展性,它基于接口编程,你可以实现自己 Schedule 调度器,Job 作业,以及 Trigger 触发器等 持久化,作业可以保存在内存,...也可以持久化到数据库,支持多种数据库类型:SqlServer、Oracle、MySql等 分布式和集群,这是一个高级应用,可以多台计算机之间创建负载平衡、容错处理 支持Cron表达式 支持配置文件方式定制作业调度...Hangfire可以ASP.NET/ASP.NET Core等应用程序简单方式实现触发,延迟以及定时执行等任务。...官方地址: https://www.hangfire.io 特性 安装简单,快速入门:没有Windows服务,没有Windows调度程序,不需要单独应用程序 可持久化:后台作业是存储持久存储介质

2.7K20

误删除 文件 磁盘 格式化 勒索 加密 数据 恢复 指南

R-Studio这个软件是Windows电脑和Windows服务器上都能运行、可以恢复Windows文件系统绝好软件,我试过了5种以上恢复软件,就这个软件恢复效率和结果最好。...Linux文件系统WindowsNTFS不一样,格式化后别抱太大希望,一般情况下不可能完整恢复,倒是能找到一些没有原始文件名和目录结构元数据,但这些数据如果量很大且你不太熟悉自己文件情况的话,鉴别重用就太难了...我还请教了对方“被加密勒索文件找数据恢复公司有没有办法”,对方很明确地说要看加密情况,因为加密原理是文件头部加密或在整个文件里分段加密。..._003.html 平时正常使用时需要注意问题 http://www.anedata.com/resource_002.html 数据恢复需要注意问题 http://www.anedata.com...三、R-Studio使用过程 如果是Linux EXT3、EXT4文件系统,可以Windows服务器里安装个能识别EXT文件系统软件ext2fsd 使用 Ext2Fsd 遇到坑(本人未验证,有好兄弟亲自验证过

8.9K577

Visual Studio 2019 16.1 更新摘要

Visual Studio 2019 版本 16.1 摘要 IDE 默认情况下,Visual Studio IntelliCode 随包含 C#、XAML 或 C++ 任何工作负载一起安装。... Visual Studio 本机方式将适用于 Linux Windows 子系统和 C++ 结合使用,并将 AddressSanitizer 用于 Linux 项目和 WSL.。....NET 新.NET 效率功能包括项目和解决方案,单击一次代码清理新切换块注释键盘快捷方式,重构将类型移动到其他命名空间。 现在可以通过开始窗口中克隆屏幕从 SSH URI 克隆代码。...Resx 编辑器呈现。 查找所有引用都 minimises 使用箭头键时。 无法复制文件"obj\x64\Debug\Management.exe",因为未找到。...运行应用引用库后,删除了项目中程序集引用。 当将 Visual Studio 2019 从 RC 更新到 GA 时,Visual Studio RC 快捷方式将被保留。

5.7K40

.NET平台系列7 .NET Core 体系结构详解

部分功能(包含Windows UI部分),比如JIT、垃圾收集器(GC)、CLR、BCL等。...、错误回报等等功能,只要是遵循 CLI 标准编程语言,都可以利用 .NET Compiler Platform 实现出编译器,让程序管理工具能实现如语法提示、语法自动完成、关键字高亮等可视化能力。   ...Core RT   Core RT 是以AOT (Ahead-of-time) 编译方式为主核心功能, .NET Core 内称为 Core RT, UWP 则是称为 .NET Native。   ...Core RT 会在不同平台使用不同 AOT 技术: · Windows使用是 .NET Native。...默认情况下,RyuJIT 作为一个 AOT 编译器将IL编译成机器码。另一个方式是将C#代码编译成C++代码,然后调用对应平台C++编译器优化编译成机器码。

96620

专业上常用工具和类库集

Razor Generrator:该扩展主要是可以把Razor视图文件项目中自动生成对应C#代码,提升MVC项目的视图质量和运行速度,本文后面会详述。...IISExpress:用于没安装IIS机器上,IIS相同方式运行Web应用程序。为开发者调试Web应用程序提供方便快捷安全手段。...Everything:Windows上我所见过最快文件搜索软件,速度抛开Windows系统自带搜索功能大概地球到木星距离——只要你文件系统格式是NTFS。...默认情况下,MVC视图是在被请求到时动态编译执行,也就是说不请求就不编译,会造成几个明显问题: 执行到该视图就不知道是否存在编译级错误; 请求时才编译视图,使得性能变得低下; 如果项目还带有...也是目前.NET领域唯一支持LinqMock框架 项目网站:https://github.com/Moq/moq4 CsQuery CsQuery相当于是jQueryC#实现,可以C#代码对HTML

2.7K90

收获 NetNTLM

虽然从概念上讲,这是一条非常强大攻击路径,但很少有人能有效地将其武器化红队交战实际使用红队交战,您通常以低权限用户身份通过命令和控制通道进行操作。...Windows 使用 WebClient 服务实现 WebDAV,其目的是通过原生 API 调用对 Windows 应用程序进行无缝文件交互;也就是说,它被视为远程文件系统。...Farmer 可以在任何端口上运行,并将从任何传入连接恢复 NetNTLM 哈希,将它们打印到屏幕上或将它们存储文件系统加密日志文件。...考虑到这一点,我们提出了以下(可能不完整)可以(ab)用于效果文件类型候选清单: Windows 快捷方式 (.lnk) URL 文件 (.url) Windows 库文件 (.library-ms)...Windows 快捷方式 Windows 快捷方式文件本身可以指向 UNC 路径,但这当然需要用户打开 LNK。

1.1K30
领券