He mejorado el código bajo mis necesidades, a ver si te gusta

#Region " Associate File extension "
Public Sub Assoc( _
ByVal File_extension As String, _
ByVal Default_ID As String, _
ByVal Kind_description As String, _
ByVal Application As String, _
Optional Application_arguments As String = " ""%1""", _
Optional File_icon As String = "")
Microsoft.Win32.Registry.ClassesRoot.CreateSubKey("." & File_extension).SetValue("", Default_ID)
Using Associate_extension_key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(Default_ID)
Associate_extension_key.SetValue("", Kind_description)
Associate_extension_key.CreateSubKey("DefaultIcon").SetValue("", File_icon)
Associate_extension_key.CreateSubKey("Shell\Open\Command").SetValue("", Application & Application_arguments)
End Using
End Sub
#End Region
Ejemplos de uso:
Assoc("bl", "Bloc", "Bloc TextFile", "Notepad.exe")
' Los últimos dos argumentos son opcionales.
Assoc("PY", "Python", "Python script", "CMD /K ", """Python.exe ""%1"" %*""", "C:\Icons.dll,6")
Saludos.