Skip to content

Commit 837b264

Browse files
committed
Resolve issues with configurator being clumsy on first use
1 parent d4a1e0b commit 837b264

File tree

2 files changed

+36
-17
lines changed

2 files changed

+36
-17
lines changed

BSCP/Configurator/ConfigModel.cs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,25 +89,37 @@ public ConfigModel(String name, String defaultCommand, String defaultConsole, Bo
8989
/// </summary>
9090
public void readOrUpdateFromRegistry()
9191
{
92-
var command_key = Registry.GetValue(app_key_base + "\\" + Name, "command", null);
93-
var console_key = Registry.GetValue(app_key_base + "\\" + Name, "console", null);
92+
var command_key = Registry.GetValue(get_full_name(), "command", null);
93+
var console_key = Registry.GetValue(get_full_name(), "console", null);
94+
var xming_key = Registry.GetValue(get_full_name(), "xming", null);
95+
var name_key = Registry.GetValue(get_full_name(), "name", null);
9496
if (command_key == null)
9597
{
9698
//insert key & set value
9799
Registry.SetValue(get_full_name(), "command", this.DefaultCommand);
100+
command_key = Registry.GetValue(app_key_base + "\\" + Name, "command", null);
101+
}
98102

99-
} else
100-
{
101-
this.Command = command_key.ToString();
102-
}
103+
this.Command = command_key.ToString();
103104

104105
if (console_key == null)
105106
{
106107
Registry.SetValue(get_full_name(), "console", this.DefaultConsole);
107-
} else
108+
console_key = Registry.GetValue(app_key_base + "\\" + Name, "console", null);
109+
}
110+
111+
this.Console = console_key.ToString();
112+
113+
if (xming_key == null)
108114
{
109-
this.Console = console_key.ToString();
115+
Registry.SetValue(get_full_name(), "xming", this._usesXming.ToString());
110116
}
117+
118+
if (name_key == null)
119+
{
120+
Registry.SetValue(get_full_name(), "name", this.Name);
121+
}
122+
111123
}
112124

113125
public void pushToRegistry()

BSCP/Configurator/MainWindow.xaml.cs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)