我希望我的程序询问用户“你想设置.mp3文件类型总是默认打开这个程序吗?” (仅限第一次)这样做的任何例子?
答案 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'。