1

我希望我的程序询问用户“你想设置 .mp3 文件类型始终默认由该程序打开吗?” (仅限第一次)有什么例子可以做到这一点?

4

3 回答 3

4

首先,您需要熟悉 Windows 注册表。

程序和扩展之间的关联在 HKEY_CLASSES_ROOT 键内处理。每个扩展都显示为一个子键。

作为每个键的默认值,您将找到处理该特定文件类型当前支持的大多数操作的关联键。

例如,如果您已安装 VLC 并将其配置为默认 MP3 播放器,您可能会发现 .mp3 的默认值设置为“WMP11.AssocFile.MP3”或者可能设置为“VLC.mp3”。因此,现在您需要再次在 HKEY_CLASSES_ROOT 中找到该密钥。

尽管这可能会有所不同,但您应该会发现“VLC.mp3”(或与 .mp3 扩展名关联的任何键)有一个名为“shell”的子键。在“shell”下,您会发现另一个名为“Open”的子键。最后,在“打开”下,您将看到另一个名为“命令”的子键。

“Command”键是包含 Windows(和其他程序)用来打开/启动当前与“.mp3”(或任何其他)扩展名关联的任何应用程序的信息的键。

一旦您了解并熟悉在注册表中处理关联的方式,您就应该使用 .NET 的Microsoft.Win32Registry 类来导航和查询所需的键及其值。

这是代码外观的非常基本的说明:

Dim mp3 = Registry.ClassesRoot.OpenSubKey(".mp3")
Dim associatedValue = mp3.GetValue("")
Dim associatedKey = Registry.ClassesRoot.OpenSubKey(associatedValue)
Dim defaultProgram = associatedKey.OpenSubKey("Shell\Open\Command").GetValue("")

MsgBox("MP3 Files Are Opened Using: " + vbCrLf + defaultProgram)

希望这可以帮助...

于 2013-01-15T01:50:28.863 回答
1

您需要设置文件关联。有关在 VB.NET中设置文件关联的代码项目,请参阅这篇文章。

于 2013-01-15T01:40:01.833 回答
0

导入并声明后再次出现错误

Dim rgText As Registry.ClassesRoot.OpenSubKey(".txt")

错误如下所示:

未定义类型“Registry.ClassesRoot.OpenSubKey”。

于 2017-10-06T12:23:55.883 回答