- 博客(27)
- 收藏
- 关注
原创 windows 多级右键菜单(新版菜单IExplorerCommand和旧版菜单IContextMenu)
IContextMenu与IExplorerCommand实现右键多级菜单对比 IContextMenu(传统方式) 通过QueryContextMenu动态构建菜单,使用CreatePopupMenu和InsertMenuItem添加子菜单项。 菜单响应通过InvokeCommand的lpici参数区分命令ID(LOWORD)或谓词字符串(HIWORD)。 示例:筛选.dll文件后生成注册/注销子菜单,执行regsvr32操作。 IExplorerCommand(新版Shell菜单) 原生不支持多级菜单,
2026-08-10 20:53:51
831
原创 windows新版右键菜单(快捷菜单/简化菜单/新版菜单/IExplorerCommand)开发指南
本文详细介绍了Windows 11右键菜单的开发方法。相比Win10的注册表直接修改方案,Win11新版菜单需通过实现IExplorerCommand接口,并使用MSIX打包工具在Package.appxmanifest中注册。文章包含具体开发步骤:创建ATL项目实现接口、配置打包项目、编写多级菜单逻辑,以及生成MSIX安装包。同时兼容Win10旧版菜单的开发方法也被提及,开发者可根据需求选择对应方案。文中提供了完整的代码示例和配置说明,并推荐使用Visual Studio 2022作为开发环境。
2026-08-07 14:02:00
818
原创 COM注册表键项详解
本文系统梳理了Windows注册表的核心结构与功能,重点解析了五种主要注册表根键(HKCR、HKCU、HKLM、HKU、HKCC)的层级关系与数据来源。文章详细说明了COM组件注册的关键项(CLSID、ProgID、AppID等)及其子项配置,包括进程模型、安全权限、接口代理等参数设置。同时深入分析了文件扩展名关联机制、Shell扩展点(右键菜单/属性页等)的注册方式,以及自启动项、系统预设动词等实用注册表路径。
2025-09-11 09:06:10
2360
原创 关于右键菜单特殊情况无法获取文件路径的处理方案
在使用IExplorerCommand开发Windows右键菜单时,若目标为文件夹背景(如DesktopBackground),psiItemArray可能为空或为NULL,导致无法获取路径。解决方案是通过IObjectWithSite接口结合IServiceProvider和IFolderView获取当前目录路径,实现双通道路径获取:优先使用psiItemArray,失败则回退至site_链。代码中利用ATL+WIL或C++/WinRT+WIL实现智能指针管理,确保安全调用。关键函数GetBestLoca
2026-10-26 20:56:30
276
原创 注册表架构详解
注册表采用树形结构,由五大根键(如HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER)组成,支持512级深度,键名不区分大小写。各根键映射不同系统配置,如HKLM存储机器级数据,HKCU对应当前用户。注册表值包含类型(如REG_SZ、REG_DWORD)、数据与名称。可通过regedit、命令行工具或Win32 API操作注册表,支持查询、修改、导出等操作。关键函数如RegOpenKeyEx、RegSetValueEx等实现注册表访问,适用于系统管理与开发。
2026-10-26 20:56:07
269
原创 windows重定向简述
本文总结了常见命令行操作符和重定向功能,包括管道符、逻辑操作符、输出/输入重定向、错误流处理及句柄说明。重点覆盖了|、&&、||、>、>>、2>等基础操作符的用法,解释了STDIN/STDOUT/STDERR三种标准句柄(0/1/2),并补充了PowerShell特有的6种信息流(1-6)及其版本支持情况。文中通过实例展示了文件重定向、错误流合并、输出屏蔽等典型应用场景,同时提及了转义符^的使用方法。
2026-08-19 16:35:42
185
原创 环境中公开可执行文件的方法
文章摘要:Windows系统通过四种独立机制实现"输入名称启动程序":1. CreateProcess API的标准搜索顺序(依赖PATH);2. AppPaths注册表项(ShellExecute级别,无需修改PATH);3. AppExecutionAliases(MSIX应用专属,通过PATH中的重解析点实现);4. 当前工作目录的直接执行。其中AppPaths注册表机制最为关键,允许程序通过注册表注册而非修改全局PATH实现按名称启动。
2026-08-14 00:01:15
399
原创 Doxygen 注释
Doxygen是一款跨平台代码文档生成工具,通过解析特殊格式的注释自动生成HTML/PDF等格式的文档。它采用"代码即文档"理念,支持Javadoc和Qt两种主流注释风格(推荐/**...*/),通过@param、@return等命令标记参数、返回值等元素。文档可涵盖文件头、命名空间、类、成员变量等C++组件,支持Markdown语法和调用关系图生成。最佳实践包括:统一注释风格、详细注释公共API、保持文档同步更新,并建议集成到CI/CD流程实现自动化。配置文件Doxyfile可自定义输
2026-08-13 00:31:27
325
原创 windows如何获取system级权限
摘要:在Windows系统中,SYSTEM账户(SID: S-1-5-18)拥有最高权限,但无法直接登录。可通过安全工具临时获取其权限:(1)使用微软官方PsExec创建交互式SYSTEM会话;(2)通过任务计划程序执行SYSTEM权限任务;(3)使用开源工具NSudo获取TrustedInstaller权限(高于SYSTEM)。操作需谨慎,因SYSTEM权限无UAC保护,误操作可能导致系统崩溃。完成后应立即关闭会话,建议优先使用更安全的替代方案如启用Administrator账户或通过takeown/ic
2026-08-13 00:31:01
347
原创 C++ 模板(Template)详解
本文全面介绍了C++模板机制的核心内容。首先讲解了函数模板和类模板的基本语法与使用方式,包括参数推导、多模板参数和类模板特化。其次详细说明了非类型模板参数、默认参数和可变参数模板的应用场景与实现方法。然后深入探讨了模板元编程技术,包括SFINAE、C++20概念和模板继承等高级特性。文章还涵盖了模板实例化规则、两阶段名称查找和模板别名等重要概念。最后提供了模板编程的最佳实践建议,如优先使用typename关键字、避免深度递归、利用static_assert优化错误提示等。全文系统地梳理了C++模板从基础到高
2026-08-12 22:51:26
198
原创 COM 接口方法返回类型声明与实现宏
本文介绍了COM接口声明和实现中常用的宏定义及其用途。STDMETHOD/STDMETHOD_用于声明返回HRESULT或指定类型的纯虚方法;IFACEMETHOD系列宏增加了override和nothrow特性;STDMETHODIMP/STDMETHODIMP_则用于实现对应的方法。这些宏简化了接口定义和实现,确保了方法声明的标准化,其中PURE标记强制子类实现纯虚函数。文章还展示了接口声明和实现的完整示例代码,包括IUnknown标准方法和自定义方法的定义与实现。
2026-08-12 22:50:56
150
原创 win32打开文件或执行程序(ShellExecute和ShellExecuteEx)
ShellExecute 和 ShellExecuteEx 是 Windows API 中用于执行外部程序或文件操作的两个关键函数。ShellExecute 通过指定操作类型(如打开、编辑、打印等)和显示方式(最小化/最大化等)来执行文件,支持基础功能但参数较少。ShellExecuteEx 则通过 SHELLEXECUTEINFO 结构体提供更丰富的控制选项,包括进程句柄获取、异步执行控制等高级功能。两者都支持常见操作如 runas(管理员权限运行)、open(打开文件)等,并返回不同错误代码(如文件未找
2026-08-09 11:17:59
234
原创 C++中源变量、指针、引用、const 简述
本文解析了C++编程中关键概念的关系结构:变量存储原值,指针存储变量地址,引用作为变量的别名地址。通过案例展示了变量声明、取地址操作、指针定义与解引用等核心操作。重点区分了四种const修饰的用法:const int(只读变量)、const int*(指向常量的指针)、int* const(常量指针)、const int&(只读引用),分别从"能否修改原值"和"能否改变指向"两个维度进行特性对比。典型场景包括保护数据不被修改(值/内容const)和固定指针/引
2026-08-09 11:17:31
169
原创 应用包清单(AppxManifest.xml与Package.appxmanifest)
摘要: Windows应用程序包清单(AppxManifest.xml/Package.appxmanifest)是一个必需的XML文件,用于定义应用部署信息,包括包标识、依赖项、功能、扩展点等。其架构基于多个XSD文件(如UapManifestSchema.xsd),并通过命名空间相互引用。清单在签名后不可修改,否则会失效。
2026-08-08 08:39:35
226
原创 微软 SAL注释语言 汇总
SAL(Source Annotation Language)是微软提供的源代码注释语言,用于为函数参数、返回值、结构体和类等元素添加详细注释,帮助Visual Studio代码分析工具验证代码的正确使用(如只读、只写、可选/必选参数等)。 SAL注释分为多种类型,包括: 基本参数注释:如_In_(只读输入)、_Out_(只写输出)、_Inout_(可读写)。 指针和缓冲区注释:如_In_reads_(s)(输入数组大小)、_Out_writes_bytes_(s)(输出缓冲区字节数)。 等
2026-08-08 08:38:30
205
原创 旧版快捷菜单(IContextMenu)实现
摘要:本文详细介绍了Windows Shell扩展中IContextMenu接口的实现过程,包括IShellExtInit初始化、QueryContextMenu菜单项添加、InvokeCommand命令执行三个核心阶段。重点解析了关键数据结构如CMINVOKECOMMANDINFO和MENUITEMINFO的使用方法,以及InsertMenu/InsertMenuItem等API的参数配置技巧。文章还特别说明了对uFlags标志位的处理策略,例如CMF_DEFAULTONLY和CMF_EXTENDEDVE
2026-08-07 14:16:01
177
原创 环境变量简述
本文介绍了Windows环境变量的基本概念、编辑方法和分类。环境变量以键值对形式存储,分为系统变量和用户变量,可通过系统设置或专用工具修改。文中详细列举了常见的只读/隐藏变量(如系统路径、用户目录等)和可自定义的预定义变量(如处理器信息、临时目录等),并说明其作用域和注册表存储位置。环境变量类型包括文本字符串和可扩展字符串,分别对应不同的注册表类型。这些变量为系统和应用程序提供关键配置信息,合理设置可优化系统运行。
2026-06-29 01:28:16
201
原创 ATL的版本化 ProgID 与注册表动态绑定机制
打开.test程序时调用【UserExt.ContextMenu】(无版本)的程序指向【UserExt.ContextMenu.1】,其中【UserExt.ContextMenu】【UserExt.ContextMenu.1】均为类对象,【UserExt.ContextMenu】用于指向,【UserExt.ContextMenu.1】是实际功能类,新版本更新时直接需改其中的CurVer指向指向新的类比如【UserExt.ContextMenu.2】
2026-06-13 02:02:47
201
原创 url文件 与 lnk文件
本文系统解析了Windows系统中.url和.lnk两种快捷方式文件的格式差异与核心功能。.url是纯文本格式,通过[InternetShortcut]段定义目标地址及相关元数据,包含必需字段(URL)和扩展字段(图标、安全区域等)。.lnk则是二进制格式,遵循ShellLink规范,由头部(76字节固定结构)和可选数据块(IDList、LinkInfo等)组成。
2026-06-01 21:46:13
408
原创 我的世界微软官方基岩版存储信息
Minecraft Bedrock版安装与数据存储路径如下:本体默认位于C盘WindowsApps,地图存于%APPDATA%.minecraft\saves或Minecraft Bedrock相关用户目录;资源包、行为包及皮肤包主要在%APPDATA%\Minecraft Bedrock\premium_cache及Users\Shared\games\com.mojang目录下,开发包则位于development_*文件夹中。网易版路径为%APPDATA%\MinecraftPE_Netease\。
2026-01-06 15:27:44
1925
原创 获取中国移动用户使用详单
摘要:本文介绍了一种从中国移动营业厅导出详单数据的方法。通过浏览器开发者工具发现,数据通过JSONP接口获取,每页最多可拉取300条记录。关键是通过身份验证后,使用JavaScript代码循环请求不同页码的数据,并将返回的JSONP数据块保存。文中提供了请求参数说明和核心代码示例,包括不同账单类型的标识码。该方法适用于通话、短信、上网等7种详单类型,但需注意数据安全性和重命名保存的文件。
2025-09-21 08:38:09
514
原创 HRESULT错误码
HRESULT是Windows系统中32位整数形式的错误码,包含成功/失败位(31位)、系统预留位(30-16位)和应用自定义位(15-0位)。常见错误码包括成功码(S_OK、S_FALSE)和失败码(E_FAIL、E_ABORT等),涵盖操作中止、内存不足、参数无效等各类错误情况。这类结构化错误码广泛应用于Windows编程接口中,便于开发者快速诊断问题。
2025-09-11 10:24:41
581
原创 windows ATL项目简介
COMATL技术结合了COM和ATL,使开发者能在Windows平台上快速构建COM组件,实现如ShellExtension等win32功能。本文将介绍如何创建VisualStudio的ATL项目
2025-05-11 23:12:28
1779
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅