- #Region " RegEdit " 
-   
- ' [ RegEdit Functions ] 
- ' 
- ' // By Elektro H@cker 
- ' 
- ' Examples : 
- ' 
- ' ----------- 
- ' Create Key: 
- ' ----------- 
- ' RegEdit.Create_Key("HKCU\Software\MyProgram")                        ' Creates "HKCU\Software\MyProgram" 
- ' RegEdit.Create_Key("HKEY_CURRENT_USER\Software\MyProgram\Settings\") ' Creates "HKCU\Software\MyProgram\Settings" 
- ' 
- ' ----------- 
- ' Delete Key: 
- ' ----------- 
- ' RegEdit.Delete_Key("HKLM\Software\7-zip")                ' Deletes the "7-zip" tree including subkeys 
- ' RegEdit.Delete_Key("HKEY_LOCAL_MACHINE\Software\7-zip\") ' Deletes the "7-zip" tree including subkeys 
- ' 
- ' ------------- 
- ' Delete Value: 
- ' ------------- 
- ' RegEdit.Delete_Value("HKCU\Software\7-Zip", "Lang")               ' Deletes "Lang" Value 
- ' RegEdit.Delete_Value("HKEY_CURRENT_USER\Software\7-Zip\", "Lang") ' Deletes "Lang" Value 
- ' 
- ' ---------- 
- ' Get Value: 
- ' ---------- 
- ' Dim Data As String = RegEdit.Get_Value("HKCU\Software\MyProgram", "Value name")) 
- ' Dim Data As String = RegEdit.Get_Value("HKEY_CURRENT_USER\Software\MyProgram", "Value name")) 
- ' 
- ' ---------- 
- ' Set Value: 
- ' ---------- 
- ' RegEdit.Set_Value("HKCU\Software\MyProgram", "Value name", "Data", Microsoft.Win32.RegistryValueKind.String)               ' Create/Replace "Value Name" with "Data" as string data 
- ' RegEdit.Set_Value("HKEY_CURRENT_USER\Software\MyProgram\", "Value name", "Data", Microsoft.Win32.RegistryValueKind.String) ' Create/Replace "Value Name" with "Data" as string data 
- ' 
- ' ----------- 
- ' Export Key: 
- ' ----------- 
- ' RegEdit.Export_Key("HKLM", "C:\HKLM.reg")                  ' Export entire "HKEY_LOCAL_MACHINE" Tree to "C:\HKLM.reg" file. 
- ' RegEdit.Export_Key("HKLM\Software\7-zip\", "C:\7-zip.reg") ' Export entire "7-zip" Tree to "C:\7-zip.reg" file. 
- ' 
- ' ------------ 
- ' Import File: 
- ' ------------ 
- ' RegEdit.Import_RegFile("C:\Registry_File.reg") ' Install a registry file. 
- ' 
- ' ------------ 
- ' Jump To Key: 
- ' ------------ 
- ' RegEdit.Jump_To_Key("HKLM")                               ' Opens Regedit at "HKEY_LOCAL_MACHINE" Root. 
- ' RegEdit.Jump_To_Key("HKEY_LOCAL_MACHINE\Software\7-zip\") ' Opens Regedit at "HKEY_LOCAL_MACHINE\Software\7-zip" tree. 
- ' 
- ' ----------- 
- ' Exist Key?: 
- ' ----------- 
- ' MsgBox(RegEdit.Exist_Key("HKCU\software") ' Checks if "Software" Key exist. 
-   
- ' ------------- 
- ' Exist Value?: 
- ' ------------- 
- ' MsgBox(RegEdit.Exist_Value("HKLM\software\7-zip", "Path") ' Checks if "Path" value exist. 
- ' 
- ' ------------ 
- ' Exist Data?: 
- ' ------------ 
- ' MsgBox(RegEdit.Exist_Data("HKLM\software\7-zip", "Path") ' Checks if "Path" value have empty data. 
- ' 
- ' --------- 
- ' Copy Key: 
- ' --------- 
- ' RegEdit.Copy_Key("HKCU", "Software", "7-Zip", "HKLM", "Software", "7-zip")          ' Copies "HKCU\Software\7-Zip" to "HKLM\Software\7-Zip" 
- ' RegEdit.Copy_Key("HKCU", "Software", "7-Zip", Nothing, "Software", "7-zip")         ' Copies "HKCU\Software\7-Zip" to "HKCU\Software\7-Zip" 
- ' RegEdit.Copy_Key("HKCU", "Software", "7-Zip", "HKLM", "Software", Nothing)          ' Copies "HKCU\Software\7-Zip" to "HKLM\Software\" 
- ' RegEdit.Copy_Key("HKCU", "Software", "7-Zip", "HKLM", Nothing, Nothing)             ' Copies "HKCU\Software\7-Zip" to "HKLM\" 
- ' RegEdit.Copy_Key("HKCU", "\Software\", "\7-Zip\", "HKLM", "\Software\", "\7-zip\")  ' Copies "HKCU\Software\7-Zip" to "HKLM\Software\7-Zip" 
- ' 
- ' ----------- 
- ' Copy Value: 
- ' ----------- 
- ' RegEdit.Copy_Value("HKLM\software\7-zip", "path", "HKLM\software\7-zip", "path_backup") ' Copies "Path" value with their data to "HKLM\software\7-zip" "path_backup". 
- ' 
- ' ------------------- 
- ' Set_UserAccess_Key: 
- ' ------------------- 
- ' RegEdit.Set_UserAccess_Key("HKCU\Software\7-Zip", {RegEdit.RegUserAccess.Administrators_Full_Access}) 
- ' RegEdit.Set_UserAccess_Key("HKEY_CURRENT_USER\Software\7-Zip", {RegEdit.RegUserAccess.Administrators_Full_Access, RegEdit.RegUserAccess.Creator_Full_Access, RegEdit.RegUserAccess.System_Full_Access}) 
-   
- #Region " RegEdit Class " 
-   
- Public Class RegEdit 
-   
-     Private Shared RootKey As Microsoft.Win32.RegistryKey = Nothing 
-     Private Shared KeyPath As String = String.Empty 
-   
-     ''' <summary> 
-     ''' Create a new registry key. 
-     ''' </summary> 
-     Public Shared Function Create_Key(ByVal RegKey As String) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = Get_Key_Path(RegKey) 
-   
-         Try 
-             RootKey.CreateSubKey(KeyPath) 
-             RootKey.Dispose() 
-             Return True 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Delete a registry key. 
-     ''' </summary> 
-     Public Shared Function Delete_Key(ByVal RegKey As String) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = Get_Key_Path(RegKey) 
-   
-         Try 
-             RootKey.DeleteSubKeyTree(KeyPath) 
-             RootKey.Dispose() 
-             Return True 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Delete a registry key. 
-     ''' </summary> 
-     Public Shared Function Delete_Value(ByVal RegKey As String, ByVal RegValue As String) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = Get_Key_Path(RegKey) 
-   
-         Try 
-             RootKey.OpenSubKey(KeyPath, True).DeleteValue(RegValue) 
-             RootKey.Dispose() 
-             Return True 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Get the data of a registry value. 
-     ''' </summary> 
-     Public Shared Function Get_Value(ByVal RegKey As String, ByVal RegValue As String) As String 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = RootKey.ToString & "\" & Get_Key_Path(RegKey) 
-         RootKey.Dispose() 
-   
-         Try 
-             Return My.Computer.Registry.GetValue(KeyPath, RegValue, Nothing) 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-     End Function 
-   
-     ''' <summary> 
-     ''' Set the data of a registry value. 
-     ''' If the Key or value don't exist it will be created automatically. 
-     ''' </summary> 
-     Public Shared Function Set_Value(ByVal RegKey As String, _ 
-                                      ByVal RegValue As String, _ 
-                                      ByVal RegData As String, _ 
-                                      ByVal RegDataType As Microsoft.Win32.RegistryValueKind) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = RootKey.ToString & "\" & Get_Key_Path(RegKey) 
-   
-         Try 
-             If RegDataType = Microsoft.Win32.RegistryValueKind.Binary Then 
-                 My.Computer.Registry.SetValue(KeyPath, RegValue, System.Text.Encoding.ASCII.GetBytes(RegData), Microsoft.Win32.RegistryValueKind.Binary) 
-                 RootKey.Dispose() 
-             Else 
-                 My.Computer.Registry.SetValue(KeyPath, RegValue, RegData, RegDataType) 
-                 RootKey.Dispose() 
-             End If 
-             Return True 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Export a registry key (including sub-keys) to a file. 
-     ''' </summary> 
-     Public Shared Function Export_Key(ByVal RegKey As String, ByVal OutputFile As String) As Boolean 
-         Dim RootKey As String = Get_Root_Key(RegKey).ToString 
-         Dim KeyPath As String = RootKey & "\" & Get_Key_Path(RegKey) 
-         If KeyPath.EndsWith("\") Then KeyPath = KeyPath.Substring(0, KeyPath.Length - 1) 
-   
-         Try 
-             Dim Regedit As New Process() 
-             Dim Regedit_Info As New ProcessStartInfo() 
-   
-             Regedit_Info.FileName = "Reg.exe" 
-             Regedit_Info.Arguments = "Export " & """" & KeyPath & """" & " " & """" & OutputFile & """" & " /y" 
-             Regedit_Info.CreateNoWindow = True 
-             Regedit_Info.WindowStyle = ProcessWindowStyle.Hidden 
-             Regedit_Info.UseShellExecute = False 
-             Regedit.StartInfo = Regedit_Info 
-             Regedit.Start() 
-             Regedit.WaitForExit() 
-   
-             If Regedit.ExitCode <> 0 Then 
-                 Regedit.Dispose() 
-                 Return False 
-             Else 
-                 Regedit.Dispose() 
-                 Return True 
-             End If 
-   
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Import a registry file. 
-     ''' </summary> 
-     Public Shared Function Import_RegFile(ByVal RegFile As String) As Boolean 
-   
-         If-  IO. File- . Exists(- RegFile ) Then
 
-   
-             Try 
-                 Dim Regedit As New Process() 
-                 Dim Regedit_Info As New ProcessStartInfo() 
-   
-                 Regedit_Info.FileName = "Reg.exe" 
-                 Regedit_Info.Arguments = "Import " & """" & RegFile & """" 
-                 Regedit_Info.CreateNoWindow = True 
-                 Regedit_Info.WindowStyle = ProcessWindowStyle.Hidden 
-                 Regedit_Info.UseShellExecute = False 
-                 Regedit.StartInfo = Regedit_Info 
-                 Regedit.Start() 
-                 Regedit.WaitForExit() 
-   
-                 If Regedit.ExitCode <> 0 Then 
-                     Regedit.Dispose() 
-                     Return False 
-                 Else 
-                     Regedit.Dispose() 
-                     Return True 
-                 End If 
-   
-             Catch ex As Exception 
-                 ' MsgBox(ex.Message) 
-                 ' Throw New Exception(ex.Message) 
-                 Return False 
-             End Try 
-   
-         Else 
-             ' MsgBox("File don't exist") 
-             Return False 
-   
-         End If 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Open Regedit at specific key. 
-     ''' </summary> 
-     Public Shared Function Jump_To_Key(ByVal RegKey As String) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = RootKey.ToString & "\" & Get_Key_Path(RegKey) 
-         If KeyPath.EndsWith("\") Then KeyPath = KeyPath.Substring(0, KeyPath.Length - 1) 
-   
-         Try 
-             Set_Value("HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey", "" & KeyPath & "", Microsoft.Win32.RegistryValueKind.String) 
-             RootKey.Dispose() 
-             Process.Start("Regedit.exe") 
-             Return True 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Checks if a Key exist. 
-     ''' </summary> 
-     Public Shared Function Exist_Key(ByVal RegKey As String) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = Get_Key_Path(RegKey) 
-   
-         If RootKey Is Nothing OrElse KeyPath Is Nothing Then Return False 
-   
-         If RootKey.OpenSubKey(KeyPath, False) Is Nothing Then 
-             RootKey.Dispose() 
-             Return False 
-         Else 
-             RootKey.Dispose() 
-             Return True 
-         End If 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Checks if a value exist. 
-     ''' </summary> 
-     Public Shared Function Exist_Value(ByVal RegKey As String, ByVal RegValue As String) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = Get_Key_Path(RegKey) 
-   
-         Try 
-             If RootKey.OpenSubKey(KeyPath, False).GetValue(RegValue) = String.Empty Then 
-                 RootKey.Dispose() 
-                 Return False 
-             Else 
-                 RootKey.Dispose() 
-                 Return True 
-             End If 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Check if a value have empty data. 
-     ''' </summary> 
-     Public Shared Function Exist_Data(ByVal RegKey As String, ByVal RegValue As String) As Boolean 
-   
-         RootKey = Get_Root_Key(RegKey) 
-         KeyPath = RootKey.ToString & "\" & Get_Key_Path(RegKey) 
-   
-         Try 
-             If My.Computer.Registry.GetValue(KeyPath, RegValue, Nothing) = Nothing Then 
-                 RootKey.Dispose() 
-                 Return False 
-             Else 
-                 RootKey.Dispose() 
-                 Return True 
-             End If 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Copy a key tree to another location of the registry. 
-     ''' </summary> 
-     Public Shared Function Copy_Key(ByVal OldRootKey As String, _ 
-                         ByVal OldPath As String, _ 
-                         ByVal OldName As String, _ 
-                         ByVal NewRootKey As String, _ 
-                         ByVal NewPath As String, _ 
-                         ByVal NewName As String) As Boolean 
-   
-         If OldPath Is Nothing Then OldPath = "" 
-         If NewRootKey Is Nothing Then NewRootKey = OldRootKey 
-         If NewPath Is Nothing Then NewPath = "" 
-         If NewName Is Nothing Then NewName = "" 
-   
-         If OldRootKey.EndsWith("\") Then OldRootKey = OldRootKey.Substring(0, OldRootKey.Length - 1) 
-         If NewRootKey.EndsWith("\") Then NewRootKey = NewRootKey.Substring(0, NewRootKey.Length - 1) 
-   
-         If OldPath.StartsWith("\") Then OldPath = OldPath.Substring(1, OldPath.Length - 1) 
-         If OldPath.EndsWith("\") Then OldPath = OldPath.Substring(0, OldPath.Length - 1) 
-         If NewPath.StartsWith("\") Then NewPath = NewPath.Substring(1, NewPath.Length - 1) 
-         If NewPath.EndsWith("\") Then NewPath = NewPath.Substring(0, NewPath.Length - 1) 
-   
-         If OldName.StartsWith("\") Then OldName = OldName.Substring(1, OldName.Length - 1) 
-         If OldName.EndsWith("\") Then OldName = OldName.Substring(0, OldName.Length - 1) 
-         If NewName.StartsWith("\") Then NewName = NewName.Substring(1, NewName.Length - 1) 
-         If NewName.EndsWith("\") Then NewName = NewName.Substring(0, NewName.Length - 1) 
-   
-         Dim OrigRootKey As Microsoft.Win32.RegistryKey = Get_Root_Key(OldRootKey) 
-         Dim DestRootKey As Microsoft.Win32.RegistryKey = Get_Root_Key(NewRootKey) 
-   
-         Dim oldkey As Microsoft.Win32.RegistryKey = OrigRootKey.OpenSubKey(OldPath + "\" + OldName, True) 
-         Dim newkey As Microsoft.Win32.RegistryKey = DestRootKey.OpenSubKey(NewPath, True).CreateSubKey(NewName) 
-         Reg_Copy_SubKeys(oldkey, newkey) 
-         Return True 
-   
-     End Function 
-     Private Shared Sub Reg_Copy_SubKeys(OrigKey As Microsoft.Win32.RegistryKey, DestKey As Microsoft.Win32.RegistryKey) 
-   
-         Dim ValueNames As String() = OrigKey.GetValueNames() 
-         Dim SubKeyNames As String() = OrigKey.GetSubKeyNames() 
-   
-         For i As Integer = 0 To ValueNames.Length - 1 
-             Application.DoEvents() 
-             DestKey.SetValue(ValueNames(i), OrigKey.GetValue(ValueNames(i))) 
-         Next 
-   
-         For i As Integer = 0 To SubKeyNames.Length - 1 
-             Application.DoEvents() 
-             Reg_Copy_SubKeys(OrigKey.OpenSubKey(SubKeyNames(i), True), DestKey.CreateSubKey(SubKeyNames(i))) 
-         Next 
-   
-     End Sub 
-   
-     ''' <summary> 
-     ''' Copy a value with their data to another location of the registry. 
-     ''' If the Key don't exist it will be created automatically. 
-     ''' </summary> 
-     Public Shared Function Copy_Value(ByVal RegKey As String, ByVal RegValue As String, _ 
-                                       ByVal NewRegKey As String, ByVal NewRegValue As String) As Boolean 
-   
-         Dim OldRootKey As String = Get_Root_Key(RegKey).ToString 
-         Dim OldKeyPath As String = OldRootKey & "\" & Get_Key_Path(RegKey) 
-   
-         Dim NewRootKey As String = Get_Root_Key(NewRegKey).ToString 
-         Dim NewKeyPath As String = NewRootKey & "\" & Get_Key_Path(NewRegKey) 
-   
-         Dim RegData = Get_Value(OldKeyPath, RegValue) 
-   
-         Try 
-             Set_Value(NewKeyPath, NewRegValue, RegData, Microsoft.Win32.RegistryValueKind.Unknown) 
-             Return True 
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ''' <summary> 
-     ''' Valid User identifiers for Regini.exe command. 
-     ''' </summary> 
-     Public Enum RegUserAccess As Short 
-         Administrators_Full_Access = 1 
-         Administrators_Read_Access = 2 
-         Administrators_Read_and_Write_Access = 3 
-         Administrators_Read_Write_and_Delete_Access4 
-         Administrators_Read_Write_and_Execute_Access = 20 
-         Creator_Full_Access = 5 
-         Creator_Read_and_Write_Access = 6 
-         Interactive_User_Full_Access = 21 
-         Interactive_User_Read_and_Write_Access = 22 
-         Interactive_User_Read_Write_and_Delete_Access = 23 
-         Power_Users_Full_Access = 11 
-         Power_Users_Read_and_Write_Access = 12 
-         Power_Users_Read_Write_and_Delete_Access = 13 
-         System_Full_Access = 17 
-         System_Operators_Full_Access = 14 
-         System_Operators_Read_and_Write_Access = 15 
-         System_Operators_Read_Write_and_Delete_Access = 16 
-         System_Read_Access = 19 
-         System_Read_and_Write_Access = 18 
-         World_Full_Access = 7 
-         World_Read_Access = 8 
-         World_Read_and_Write_Access = 9 
-         World_Read_Write_and_Delete_Access = 10 
-     End Enum 
-   
-     ''' <summary> 
-     ''' Modify the User permissions of a registry key. 
-     ''' </summary> 
-     Public Shared Function Set_UserAccess_Key(ByVal RegKey As String, ByVal RegUserAccess() As RegUserAccess) As Boolean 
-   
-         Dim PermissionString As String = String.Empty 
-         RootKey = Get_Root_Key(RegKey) 
-   
-         KeyPath = RootKey.ToString & "\" & Get_Key_Path(RegKey) 
-         If KeyPath.EndsWith("\") Then KeyPath = KeyPath.Substring(0, KeyPath.Length - 1) 
-   
-         For Each user In RegUserAccess 
-             ' Application.DoEvents() 
-             PermissionString += " " & user 
-         Next 
-   
-         PermissionString = "[" & PermissionString & "]" 
-         PermissionString = PermissionString.Replace("[ ", "[") 
-   
-         Try 
-   
-             Using TextFile As New IO.StreamWriter(System.IO.Path.GetTempPath() & "Regini.ini", False, System.Text.Encoding.Default) 
-                 TextFile.WriteLine("""" & KeyPath & """" & " " & PermissionString) 
-             End Using 
-   
-             Dim Regini As New Process() 
-             Dim Regini_Info As New ProcessStartInfo() 
-   
-             Regini_Info.FileName = "Regini.exe" 
-             Regini_Info.Arguments = """" & System.IO.Path.GetTempPath() & "Regini.ini" & """" 
-             Regini_Info.CreateNoWindow = True 
-             Regini_Info.WindowStyle = ProcessWindowStyle.Hidden 
-             Regini_Info.UseShellExecute = False 
-             Regini.StartInfo = Regini_Info 
-             Regini.Start() 
-             Regini.WaitForExit() 
-   
-             If Regini.ExitCode <> 0 Then 
-                 RootKey.Dispose() 
-                 Regini.Dispose() 
-                 Return False 
-             Else 
-                 RootKey.Dispose() 
-                 Regini.Dispose() 
-                 Return True 
-             End If 
-   
-         Catch ex As Exception 
-             ' MsgBox(ex.Message) 
-             ' Throw New Exception(ex.Message) 
-             Return False 
-         End Try 
-   
-     End Function 
-   
-     ' Returns the RootKey formatted 
-     Private Shared Function Get_Root_Key(ByVal RegKey As String) As Microsoft.Win32.RegistryKey 
-         Select Case RegKey.ToUpper.Split("\").First 
-             Case "HKCR", "HKEY_CLASSES_ROOT" : Return Microsoft.Win32.Registry.ClassesRoot 
-             Case "HKCC", "HKEY_CURRENT_CONFIG" : Return Microsoft.Win32.Registry.CurrentConfig 
-             Case "HKCU", "HKEY_CURRENT_USER" : Return Microsoft.Win32.Registry.CurrentUser 
-             Case "HKLM", "HKEY_LOCAL_MACHINE" : Return Microsoft.Win32.Registry.LocalMachine 
-             Case "HKEY_PERFORMANCE_DATA" : Return Microsoft.Win32.Registry.PerformanceData 
-             Case Else : Return Nothing 
-         End Select 
-     End Function 
-   
-     ' Returns the KeyPath formatted 
-     Private Shared Function Get_Key_Path(ByVal RegKey As String) As String 
-   
-         If RegKey Is Nothing Then Return Nothing 
-   
-         Dim Path As String = String.Empty 
-         For i As Integer = 1 To RegKey.Split("\").Length - 1 
-             ' Application.DoEvents() 
-             Path &= RegKey.Split("\")(i) & "\" 
-         Next 
-   
-         If Not Path.Contains("\") Then Path = Path & "\" 
-         Path = Path.Substring(0, Path.LastIndexOf("\")) 
-   
-         Return Path 
-   
-     End Function 
-   
- End Class 
-   
- #End Region 
-   
- #End Region