Hab hier mal eine aktualisierte Version (von Gnozal aus jaPBe) rausgesucht, Du lässt Dich ja doch nicht
Code: Alles auswählen
Procedure Reg_KeyExists(RootKey, KeyName$, Computer$="")
Protected Handle
If Left(KeyName$, 1) = "\"
KeyName$ = Mid(KeyName$, 2)
EndIf
If Computer$
If Not RegConnectRegistry_(Computer$, RootKey, @RootKey)
RootKey = #Null
EndIf
EndIf
If RootKey
If RegOpenKeyEx_(RootKey, KeyName$, 0, #KEY_READ, @Handle) = #ERROR_SUCCESS
RegCloseKey_(Handle)
RegCloseKey_(RootKey)
ProcedureReturn #True
EndIf
RegCloseKey_(RootKey)
EndIf
ProcedureReturn #False
EndProcedure
Procedure Reg_SetValue(RootKey, KeyName$, ValueName$, Value$, Type, Computer$="")
Protected Handle, Value
If Left(KeyName$, 1) = "\"
KeyName$ = Mid(KeyName$, 2)
EndIf
If Computer$
If Not RegConnectRegistry_(Computer$, RootKey, @RootKey)
RootKey = #Null
EndIf
EndIf
If RootKey
If RegOpenKeyEx_(RootKey, KeyName$, 0, #KEY_WRITE, @Handle) = #ERROR_SUCCESS
Select Type
Case #REG_SZ, #REG_MULTI_SZ
RegSetValueEx_(Handle, ValueName$, 0, #REG_SZ, @Value$, Len(Value$)+1)
Case #REG_DWORD
Value = Val(Value$)
RegSetValueEx_(Handle, ValueName$, 0, #REG_DWORD, @Value, SizeOf(Long))
EndSelect
RegCloseKey_(Handle)
RegCloseKey_(RootKey)
ProcedureReturn #True
EndIf
RegCloseKey_(RootKey)
EndIf
ProcedureReturn #False
EndProcedure
Procedure Reg_CreateKey(RootKey, KeyName$, Computer$="")
Protected Handle, Index, lpSecurityAttributes.SECURITY_ATTRIBUTES
If Left(KeyName$, 1) = "\"
KeyName$ = Mid(KeyName$, 2)
EndIf
If Computer$
If Not RegConnectRegistry_(Computer$, RootKey, @RootKey)
RootKey = #Null
EndIf
EndIf
If RootKey
If RegCreateKeyEx_(RootKey, KeyName$, 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_WRITE, @lpSecurityAttributes, @Handle, @Index) = #ERROR_SUCCESS
RegCloseKey_(Handle)
RegCloseKey_(RootKey)
ProcedureReturn #True
EndIf
RegCloseKey_(RootKey)
EndIf
ProcedureReturn #False
EndProcedure
Procedure Reg_CreateKeyValue(RootKey, KeyName$, ValueName$, Value$, Type, Computer$="")
If Not Reg_KeyExists(RootKey, KeyName$, Computer$)
Reg_CreateKey(RootKey, KeyName$, Computer$)
EndIf
ProcedureReturn Reg_SetValue(RootKey, KeyName$, ValueName$, Value$, Type, Computer$)
EndProcedure
Procedure AssociateFileEx(Ext$, Description$, Program$, Icon$, Name$, CommandDescr$, CommandKey$)
If GetVersion_() & $FF0000 ; Windows NT/XP
Reg_CreateKeyValue(#HKEY_CLASSES_ROOT, "Applications\"+Name$+"\shell\"+CommandDescr$+"\command", "", Chr(34)+Program$+Chr(34)+" "+Chr(34)+"%1"+Chr(34), #REG_SZ)
If Description$
Reg_CreateKeyValue(#HKEY_CLASSES_ROOT, "."+Ext$, "", Ext$+"_auto_file", #REG_SZ)
Reg_CreateKeyValue(#HKEY_CLASSES_ROOT, Ext$+"_auto_file", "", Description$, #REG_SZ)
If Icon$
Reg_CreateKeyValue(#HKEY_CLASSES_ROOT, Ext$+"_auto_file\DefaultIcon", "", Icon$, #REG_SZ)
EndIf
EndIf
ProcedureReturn Reg_CreateKeyValue(#HKEY_CURRENT_USER, "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."+Ext$, "Application", Name$, #REG_SZ)
Else ;Windows 9x
Reg_CreateKeyValue(#HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\."+Ext$, "", Name$, #REG_SZ)
If Description$
Reg_CreateKeyValue(#HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\"+Name$, "", Description$, #REG_SZ)
EndIf
If Icon$
Reg_CreateKeyValue(#HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\"+Name$+"\DefaultIcon", "", Icon$, #REG_SZ)
EndIf
If CommandDescr$ And CommandKey$
Reg_CreateKeyValue(#HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\"+Name$+"\shell\"+CommandKey$, "", CommandDescr$, #REG_SZ)
EndIf
ProcedureReturn Reg_CreateKeyValue(#HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\"+Name$+"\shell\"+CommandKey$+"\command", "", Chr(34)+Program$+Chr(34)+" "+Chr(34)+"%1"+Chr(34), #REG_SZ)
EndIf
EndProcedure