# WindowsContextMenuInstaller **Repository Path**: jeasoon/windows-context-menu-installer ## Basic Information - **Project Name**: WindowsContextMenuInstaller - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Windows Context Menu Manager 一个轻量级的 Windows 右键上下文菜单管理工具,通过 YAML 配置文件自定义右键菜单项。 ## 功能特性 - 通过 YAML 配置文件管理右键菜单项 - 交互式 TUI 界面,支持键盘导航 - 支持文件夹、文件夹空白处、特定扩展名文件、所有文件等多种场景 - 纯 PowerShell 实现,无需外部依赖 - 自动请求管理员权限 (UAC) ## 快速开始 ### 运行交互式菜单 ```powershell .\install.ps1 ``` 启动后显示交互式界面,使用方向键导航,空格选择,回车确认。 ### 命令行参数 | 参数 | 说明 | |------|------| | `-ConfigFile` | 指定配置文件路径(默认 `.\config.yaml`) | | `-List` | 列出所有配置项及其安装状态 | | `-InstallAll` | 安装所有配置的菜单项 | | `-UninstallAll` | 卸载所有配置的菜单项 | **示例:** ```powershell # 使用默认配置文件运行交互式菜单 .\install.ps1 # 列出所有菜单项状态 .\install.ps1 -List # 安装所有菜单项 .\install.ps1 -InstallAll # 卸载所有菜单项 .\install.ps1 -UninstallAll # 使用自定义配置文件 .\install.ps1 -ConfigFile "C:\path\to\my-config.yaml" ``` ## 配置文件说明 配置文件使用 YAML 格式,顶部支持注释说明。 ### 字段说明 | 字段 | 必填 | 说明 | |------|------|------| | `name` | 是 | 菜单项显示名称 | | `id` | 是 | 唯一标识符,用于注册表键名 | | `type` | 是 | 类型:`folder` 或 `file` | | `extensions` | 条件 | 文件扩展名列表,`type: file` 时必填 | | `background` | 否 | 文件夹空白处右键,仅 `type: folder` 有效 | | `icon` | 否 | 图标路径,格式为 `路径,索引` | | `command` | 是 | 执行命令,`{path}` 会被替换为实际路径 | ### type 类型说明 | type 值 | background | 效果 | |---------|------------|------| | `folder` | `false` 或省略 | 在文件夹图标上右键显示 | | `folder` | `true` | 在文件夹内空白处右键显示 | | `file` | - | 在文件上右键显示(由 extensions 决定哪些文件) | ### extensions 扩展名说明 | 值 | 说明 | |----|------| | `["*"]` | 所有文件 | | `[".ps1"]` | 仅 .ps1 文件 | | `[".ps1", ".psm1"]` | .ps1 和 .psm1 文件 | ## 配置示例 ### 文件夹 - 在文件夹图标上右键 ```yaml - name: "Open with VS Code" id: "OpenWithVSCode" type: folder icon: "C:\\Program Files\\Microsoft VS Code\\Code.exe,0" command: 'code "{path}"' ``` ### 文件夹背景 - 在文件夹内空白处右键 ```yaml - name: "在此处打开终端" id: "OpenTerminalHere" type: folder background: true icon: "C:\\Windows\\System32\\cmd.exe,0" command: 'wt -d "{path}"' ``` ### 文件 - 所有文件 ```yaml - name: "复制文件路径" id: "CopyFilePath" type: file extensions: ["*"] icon: "C:\\Windows\\System32\\clip.exe,0" command: 'powershell.exe -NoExit -Command "Set-Clipboard -Value ''{path}''"' ``` ### 文件 - 特定扩展名 ```yaml - name: "Run with PowerShell" id: "RunWithPowerShell" type: file extensions: [".ps1"] icon: "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe,0" command: 'powershell.exe -ExecutionPolicy Bypass -File "{path}"' ``` ### 文件 - 多个扩展名 ```yaml - name: "Edit with VS Code" id: "EditWithVSCode" type: file extensions: [".js", ".ts", ".json", ".yaml", ".md"] icon: "C:\\Program Files\\Microsoft VS Code\\Code.exe,0" command: 'code "{path}"' ``` ## 交互式界面操作 | 按键 | 功能 | |------|------| | `↑` / `↓` | 上下导航 | | `Space` | 切换选中状态 | | `Enter` | 应用更改 | | `Esc` | 取消退出 | 界面会自动检测每个菜单项的安装状态,选中的项目将被安装,未选中的已安装项目将被卸载。 ## 注册表路径 工具修改以下注册表位置: | 类型 | 注册表路径 | |------|-----------| | 文件夹 | `HKLM\SOFTWARE\Classes\Directory\shell\{id}` | | 文件夹背景 | `HKLM\SOFTWARE\Classes\Directory\Background\shell\{id}` | | 所有文件 | `HKLM\SOFTWARE\Classes\*\shell\{id}` | | 特定扩展名 | `HKLM\SOFTWARE\Classes\{FileType}\shell\{id}` | ## 注意事项 1. **管理员权限**:修改注册表需要管理员权限,脚本会自动请求 UAC 提权 2. **图标格式**:图标路径格式为 `可执行文件路径,图标索引`,索引从 0 开始 3. **命令转义**:YAML 中的命令使用单引号包裹,内部的单引号需要双写转义 4. **路径分隔符**:Windows 路径中的反斜杠需要双写 `\\` ## 系统要求 - Windows 10/11 - PowerShell 5.1 或 PowerShell 7+ ## 许可证 MIT License