Imports Microsoft.Win32 ' 引入Microsoft.Win32命名空间,用于访问Windows注册表
Module RegistrySettings ' 定义一个模块,用于包含设置注册表关联的逻辑
' 主程序入口点
Sub Main()
' 定义要关联的程序(阿明音乐)的可执行文件路径
Dim exePath As String = "C:\Program Files (x86)\阿明音乐\阿明音乐.EXE"
' 尝试设置文件关联
Try
' 调用SetFileAssociation子程序来设置.MP3文件与阿明音乐的关联
SetFileAssociation(".MP3", "阿明音乐", exePath)
' 通知用户需要重启计算机以使更改生效
Console.WriteLine("请重启计算机以应用更改。")
' 捕获并处理在尝试设置文件关联时可能发生的任何异常
Catch ex As Exception
' 输出错误信息到控制台
Console.WriteLine("设置文件关联时出错: " & ex.Message)
End Try
End Sub
' 设置文件关联的子程序
' 参数:
' fileExtension - 要关联的文件扩展名(例如".MP3")
' progId - 程序标识符,用于在注册表中唯一标识这个关联
' exePath - 与文件扩展名关联的可执行文件的路径
Sub SetFileAssociation(fileExtension As String, progId As String, exePath As String)
' 尝试设置注册表项以关联文件扩展名和程序
Try
' 在HKEY_CLASSES_ROOT下为文件扩展名创建一个新的子项
Using key As RegistryKey = Registry.ClassesRoot.CreateSubKey(fileExtension)
' 检查key是否为Nothing(即创建子项是否成功)
If key IsNot Nothing Then
' 设置默认值为程序标识符(progId)
key.SetValue(Nothing, progId)
End If
End Using
' 在HKEY_CLASSES_ROOT下为程序标识符(progId)创建一个新的子项
Using key As RegistryKey = Registry.ClassesRoot.CreateSubKey(progId)
' 检查key是否为Nothing
If key IsNot Nothing Then
' 设置默认值为程序的友好名称(这里为“阿明音乐”)
key.SetValue(Nothing, "阿明音乐")
End If
End Using
' 在HKEY_CLASSES_ROOT下为程序标识符的shell\open\command创建一个新的子项
' 这个子项指定了当文件被打开时应该执行哪个命令
Using key As RegistryKey = Registry.ClassesRoot.CreateSubKey(progId & "\shell\open\command")
' 检查key是否为Nothing
If key IsNot Nothing Then
' 设置默认值为可执行文件的路径,加上" "%1""来表示传递给程序的第一个参数(即文件名)
' Chr(34)是引号(")的ASCII码,用于确保路径中包含空格时能够正确解析
key.SetValue(Nothing, Chr(34) & exePath & Chr(34) & " "%1"")
End If
End Using
' 捕获并处理在尝试设置注册表项时可能发生的任何异常
' 并抛出一个新的异常,包含原始异常的信息
Catch ex As Exception
Throw New Exception("无法设置文件关联。", ex)
End Try
End Sub
End Module 这是AI写的,不知是否正确。
[此贴子已经被作者于2024/11/1 13:44:32编辑过]