如何设置“始终通过此程序打开”

时间:2013-01-15 01:30:58

标签: vb.net

我希望我的程序询问用户“你想设置.mp3文件类型总是默认打开这个程序吗?” (仅限第一次)这样做的任何例子?

3 个答案:

答案 0 :(得分:4)

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

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

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

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

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

“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)

希望这会有所帮助......

答案 1 :(得分:1)

您需要设置文件关联。请参阅setting File Associations in VB.NET上有关代码项目的文章。

答案 2 :(得分:0)

导入后再次显示错误,并将其声明为

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

,错误如下:

  

未定义类型'Registry.ClassesRoot.OpenSubKey'。