gpt4 book ai didi

c# - 如何在 Windows 上正确检索与扩展关联的打开命令?

转载 作者:太空狗 更新时间:2023-10-29 21:25:45 24 4
gpt4 key购买 nike

我正在尝试找出用于打开给定扩展名文件的可执行文件,以便在扩展名没有时显示该可执行文件的图标。

我知道该文件类型的 HKEY_CLASSES_ROOT 注册表项中的开放动词,但我发现它的值并不总是正确的。

例如,我目前在 OS X 上的 Parallels 中运行 Windows。PDF 文件的默认关联是 Safari。我通过资源管理器将默认关联更改为 Adob​​e Reader。注册表中的打开动词仍然是 Safari,但是当我双击 PDF 文件时,它会使用 Adob​​e Reader 打开。 32 位和 64 位注册表具有相同的值。

是否有更好的方法来检索文件类型的关联,无论是使用 .NET 还是 winapi?

最佳答案

您最好的选择可能是使用 Assoc* 函数组,例如 AssocQueryKey()AssocQueryString() via PInvoke .但是,我不知道 .NET Framework 附带的许多类中的一个是否已经为您包装了它。但是 Shell API 为您提供了检索此信息的选项。

另请注意备注部分,其中声明上述函数是 IQueryAssociations 的包装器接口(interface),这使您更有可能通过另一条更直接的途径从 .NET 中获得您想要的内容。

旧式函数是这个:FindExecutable() .不过,不要使用它。它使用与 ShellExecute() 相同的有缺陷的错误代码魔法。

另请参阅 Windows: List and Launch applications associated with an extension 的答案

关于c# - 如何在 Windows 上正确检索与扩展关联的打开命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com