@@ -27,6 +27,8 @@ public partial class MainWindow : Window
2727 public MainWindow ( )
2828 {
2929 context = new ObservableCollection < ConfigModel > ( ) ;
30+ InitializeComponent ( ) ;
31+ lstView . ItemsSource = context ;
3032 var hkcl = Microsoft . Win32 . Registry . LocalMachine ;
3133 try
3234 {
@@ -45,11 +47,7 @@ public MainWindow()
4547 context . Add ( new ConfigModel ( "Mate" , "-c \" cd ~/ && DISPLAY=:0 exec mate-session\" " , "bash.exe" ) ) ;
4648 context . Add ( new ConfigModel ( "Windows Explorer" , "/C \" explorer.exe\" " , "cmd.exe" , false ) ) ;
4749 }
48-
49-
50-
51- InitializeComponent ( ) ;
52- lstView . ItemsSource = context ;
50+
5351 foreach ( var item in context )
5452 {
5553 item . readOrUpdateFromRegistry ( ) ;
@@ -127,28 +125,37 @@ private void Disable_button_Click(object sender, RoutedEventArgs e)
127125 {
128126 item . delete ( ) ;
129127 }
130- //unregister credential provider
131128 var hklm = Microsoft . Win32 . Registry . LocalMachine ;
129+ //delete shell key parent
130+ hklm . OpenSubKey ( "SOFTWARE\\ Castle\\ BootShellCredentialProvider" , true ) . DeleteSubKey ( "Shells" ) ;
131+ hklm . OpenSubKey ( "SOFTWARE\\ Castle" , true ) . DeleteSubKey ( "BootShellCredentialProvider" ) ;
132+ hklm . OpenSubKey ( "SOFTWARE" , true ) . DeleteSubKey ( "Castle" ) ;
133+ //unregister credential provider
132134 try
133135 {
134136 var subkey = hklm . OpenSubKey ( credential_key_s , true ) ;
135137 subkey . DeleteSubKey ( "{" + credential_provider_guid + "}" ) ;
136138 }
137- catch ( ArgumentException ) { }
139+ catch ( ArgumentException ) { } //do nothing, already deleted
140+ catch ( NullReferenceException ) { } //do nothing, already deleted
138141 var hkcl = Microsoft . Win32 . Registry . ClassesRoot ;
139142 try
140143 {
141144 var subkey = hkcl . OpenSubKey ( "CLSID\\ {" + credential_provider_guid + "}" , true ) ;
142145 subkey . DeleteSubKey ( "InprocServer32" ) ;
143146 var parent_key = hkcl . OpenSubKey ( "CLSID" , true ) ;
144147 parent_key . DeleteSubKey ( "{" + credential_provider_guid + "}" ) ;
145- } catch ( ArgumentException ) { }
148+ }
149+ catch ( ArgumentException ) { }
150+ catch ( NullReferenceException ) { }
146151
147152 //unregister configurableShell
148153 try
149154 {
150155 Registry . SetValue ( winlogonKey_full , "Userinit" , userInitSetting_reset ) ;
151- } catch ( ArgumentException ) { }
156+ }
157+ catch ( ArgumentException ) { }
158+ catch ( NullReferenceException ) { }
152159 }
153160
154161 private void New_Button_Click ( object sender , RoutedEventArgs e )
0 commit comments