.NET 程序集的 Shell 扩展

这些 Shell 扩展是为了帮助区分 .NET 程序集和 Win32 库,以及在不使用命令提示符和 SDK 工具的情况下提供有关程序集的额外信息而编写的。这些 Shell 扩展的功能类似于使 .NET 和 VB(.NET 之前)成为可执行代码的加载器:PE/COFF 头。因此,该库非常快速,不会影响文件系统浏览体验。最近的更新通过跳过在慢速路径上的程序集检测(例如,UNC 路径或通过 VPN 映射到远程文件系统的驱动器映射)进一步提高了性能。

提供的库

此库中包含:

  • .NET 程序集的覆盖图标(.dll)
  • 显示公钥令牌和特定类型的 .NET 程序集的列处理程序。
  • 自动化对象,用于在自己的应用程序和库中获取上述信息。

自动化对象

此工具不仅帮助区分 .NET 程序集和 Win32 应用程序及库,还提供了一个简单的自动化对象,这些 Shell 扩展使用该对象。要从此类型库生成代码,请添加对名为 "AsmShell 1.0 Type Library" 的类型库的引用或 #import。使用以下成员:

IAssemblyInfo::IsAssembly([in]BSTR path, [out, retval]VARIANT_BOOL* retVal)

如果指定的文件是一个程序集,则返回 true;如果不是,则返回 false;如果出现问题,则引发错误。

IAssemblyInfo::GetFileType([in]BSTR path, [out, retval]FileType* retVal)

根据 PE/COFF 头中的指定文件信息返回 FileType 枚举成员。

IAssemblyInfo::GetPublicKeyToken([in]BSTR path, [out, retval]BSTR* retVal)

返回指定程序集的公钥令牌。

IAssemblyInfo::GetPublicKey([in]BSTR path, [out, retval]SAFEARRAY(BYTE)* retVal)

返回指定程序集的公钥字节数组。JScript 或 VBScript 不支持此功能,它们仅支持 VARIANT 数组。

对于每种方法,像 Visual Basic 这样的后期绑定语言将使用带有 [out, retval] 标记的返回值(作为方法的返回类型),也消除了需要带有特定属性标记的参数。

因此,在 VB6 和 .NET(C#、VB.NET 等)中,方法签名将如下所示:

C# bool IsAssembly( string path); FileType GetFileType( string path); string GetPublicKeyToken( string path); byte[] GetPublicKey( string path);

要求

如果正在安装的文件当前已加载,则可能需要重新启动。如果使用的是 Windows XP 并且上述条件为假,则不需要重新启动。如果使用的是 Windows 98、ME 或 2000,如果覆盖图标不存在,则应该注销并重新登录或重新启动系统;列处理程序应在安装完成后立即准备就绪。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485