我希望我的程序询问用户“你想设置 .mp3 文件类型始终默认由该程序打开吗?” (仅限第一次)有什么例子可以做到这一点?
3 回答
首先,您需要熟悉 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.Win32
Registry 类来导航和查询所需的键及其值。
这是代码外观的非常基本的说明:
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)
希望这可以帮助...
您需要设置文件关联。有关在 VB.NET中设置文件关联的代码项目,请参阅这篇文章。
导入并声明后再次出现错误
Dim rgText As Registry.ClassesRoot.OpenSubKey(".txt")
错误如下所示:
未定义类型“Registry.ClassesRoot.OpenSubKey”。