我有很多种具有不同根元素名称和命名空间的 xml 文件(所有扩展名为 .xml)。我想将每种类型与不同的应用程序相关联,并且还可以为每种类型设置不同的文件图标。这可以使用 C# .NET 完成吗?
最佳答案
处理此问题的唯一方法与 Visual Studio 用于处理 .sln 文件的方法类似,即 Visual Studio 版本选择器。此应用程序与 .sln 文件相关联,并负责提供图标和最终进程来处理特定的 .sln 文件。假设您安装了 Visual Studio,请查看位于 HKEY_CLASSES_ROOT\VisualStudio.Launcher.sln 的注册表,看看它是如何完成的。
所以基本上你需要:
.xml 文件的可执行文件.xml 文件的进程对于图标,请查看子键 ShellEx\IconHandler。您会看到它指向(在安装了 Visual Studio 2010 的 x64 计算机上)HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{9A2B23E4-2A50-48DB-B3C3-F5EA12947CB8},它在 InprocServer32 下列出 负责为文件提供图标的 DLL,在本例中为 C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\VSFileHandler.dll。您需要实现一个类似的 DLL,它共享您的启动器进程的配置/逻辑,以确定在每个文件的基础上显示什么图标。
通常的警告:在托管代码中编写 shell 扩展一直是一个很大的“不行不行”,因为 shell 扩展会加载到显示公共(public)文件对话框的任何进程中。这可能会导致困惑,因为直到 .net 4.0,只能将一个版本的 CLR 加载到进程中,因此在执行此操作之前必须非常确定。鉴于 .net 4.0 支持 in-process side by side ,这对您来说可能不是问题。
关于c# - Windows shell : How to associate different xml-files with different apps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5624221/