Dafür musste, zusätzlich zu dbayer's Methode, noch einen Eintrag in der Registry verändern, nämlich:
HKEY_CLASSES_ROOT\.txt\(Standart)
Hier muss dann der Name deines Programms rein.
Mit folgender Routine kann der Vorgang automatisiert werden (einfach "setupRegistry" aufrufen, mit dem Pfad zu deinem Prog als Parameter)
Option Explicit
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias _
"RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal _
Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal _
samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As _
Long, lpdwDisposition As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As _
Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias _
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal _
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As _
Long
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const SYNCHRONIZE = &H100000
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const REG_SZ = 1
Private Const STANDARD_RIGHTS_READ = &H20000
Private Const STANDARD_RIGHTS_WRITE = &H20000
Private Const REG_OPTION_NON_VOLATILE = 0
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_NOTIFY = &H10
Private Const KEY_SET_VALUE = &H2
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or _
KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const KEY_EXECUTE = (KEY_READ)
Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or _
KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or _
KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or _
KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Sub setupRegistry(myApp As String)
Dim key As Long
Dim sec_attrib As SECURITY_ATTRIBUTES
Dim disposition As Long
RegCreateKeyEx HKEY_CLASSES_ROOT, ".txt", 0, vbNullString, _
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, sec_attrib, key, disposition
RegSetValueEx key, vbNullString, 0, REG_SZ, ByVal myApp, Len(myApp) + 1
RegCloseKey key
End Sub |