You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取ShellFolderItem InvokeVerbEx方法的动词参数列表?

关于ShellFolderItem.InvokeVerbEx的vArgs参数获取方案

一、编程方式提取参数格式

1. 读取注册表关联项

Shell动词的命令行模板通常存放在注册表中,可直接通过PowerShell读取对应路径:

  • 通用文件类型:HKCR\*\shell\<VerbName>\command
  • 文件夹类型:HKCR\Folder\shell\<VerbName>\command
  • 特定扩展名类型:HKCR\.txt\shell\<VerbName>\command(以txt为例)

示例PowerShell代码:

# 获取.txt文件的"edit"动词命令行模板
$verbName = "edit"
$regPath = "HKCR\.txt\shell\$verbName\command"
if (Test-Path $regPath) {
    (Get-ItemProperty -Path $regPath)."(default)"
}

返回的命令行中的占位符(如%1、%*)对应参数位置:比如notepad.exe %1说明该动词无需额外vArgs,%1就是目标文件本身;如果是foo.exe %1 /option:%2,则vArgs可传入对应参数值。

2. 使用COM接口查询关联信息

通过IQueryAssociations接口可更精准获取动词关联的命令行,避免注册表读取的局限性,可借助内嵌C#代码实现:

Add-Type @"
using System;
using System.Runtime.InteropServices;

[ComImport, Guid("c46ca590-3c3f-11d2-bee6-0000f805ca57")]
public interface IQueryAssociations {
    void Init(uint flags, [MarshalAs(UnmanagedType.LPWStr)] string pszAssoc);
    void GetString(uint flags, uint strType, [MarshalAs(UnmanagedType.LPWStr)] string pszExtra, [MarshalAs(UnmanagedType.LPWStr)] out string ppszOut);
}

public class AssocHelper {
    public static string GetCommand(string ext, string verb) {
        var query = (IQueryAssociations)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("000214e6-0000-0000-c000-000000000046")));
        query.Init(0, ext);
        query.GetString(0, 1, verb, out string cmd);
        Marshal.ReleaseComObject(query);
        return cmd;
    }
}
"@

# 调用示例:获取.txt文件edit动词的命令行
[AssocHelper]::GetCommand(".txt", "edit")

二、参考资料补充

微软官方文档对vArgs的细节描述确实缺失,但可参考:

  • 旧版Windows Shell SDK文档(如Windows XP SDK),其中对常见Shell动词的参数有更详细说明
  • 经典Shell编程书籍(如《Windows Shell编程》),书中覆盖了动词参数的常见格式与使用场景

三、常见动词的参数示例

  • open:通常无需额外参数,vArgs留空即可;部分程序支持启动参数,如InvokeVerbEx("open", "/minimized")(取决于关联程序是否兼容)
  • print:部分程序接受打印参数,如/p指定打印,或/printer:"打印机名称"
  • runas:可传入用户身份参数,如InvokeVerbEx("runas", "/user:Administrator")

内容的提问来源于stack exchange,提问作者Paul π

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:15:13