ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/AnywhereTS-MSSQL/trunk/TSAdminTool/Globals.cs
Revision: 46
Committed: Thu Jul 12 14:17:14 2012 UTC (11 years, 2 months ago) by william
File size: 44844 byte(s)
Log Message:
+ add logging across ATSAdmin Tool project

File Contents

# Content
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Reflection; // For path (assembly)
5 using System.IO; // For Path
6 using System.Security; // Security Exception
7 using System.Windows.Forms; // Message Box
8 using System.Text.RegularExpressions; // For validate MAC address
9
10 namespace AnywhereTS
11 {
12 public static class ATSGlobals
13 {
14 // Version
15 public const string strDatabaseVersion = "1.0.0.3"; // The version string for the ATS database
16 //[SerializableAttribute] public struct Color;
17
18 // Registry keys
19 public static string strATSregRoot; // Registry root for AnywhereTS
20 public static string strTFTPD32RegRoot; // Registry root for TFTPD32
21 public const string strRegDHCPconfig = "DHCP"; // DCHP config in registry
22 public const string strRegTFTPconfig = "TFTP"; // TFTP root directory in registry
23 public const string strRegTFTP_root = "TFTP_root"; // TFTP root directory in registry
24 public const string strRegManagedMode = "ManagedMode"; // Reg key for managed mode.
25 public const string strRegConfigured = "Configured"; // Reg key for indicating of ATS is configured.
26 public const string strRegTerminalServer = "TerminalServer"; // Reg key for terinal server config.
27 public const string strRegRunFirstTime = "RunFirstTime"; // Reg key for first time run.
28 public const string strRegAdminVersion = "AdminVersion"; // Reg key for Admin version. Indicates that Admin app is intalled on this computer and the version of the admin app.
29
30 // Help
31 public static string helpFile; // The ATS help file
32
33 // Directories
34 static public string strTFTPdir; // The TFP root directory, including final "\"
35 static public string strExecPath; // The directory for the application exe-file
36 static public string strHelpFilePath; // The path (incl filname) to the application help file
37
38
39 // Other global variables
40 static public int managedMode; // 0=Not definied, 1=Managed, 2=Unmanged
41 static public int configured; // 0=ATS not configured, 1=ATS is configured, 2=Configured for control panel only.
42 static public int dhcpConfig; // 0=Use internal DHCP, 1=Other DHCP
43 static public int tftpConfig; // 0=Use internal TFTP, 1=Other TFTP
44 static public int terminalServerConfig; // 0=Terminal server on this computer, 1=No terminal server on this computer.
45 static public int runFirstTime; // 1=The application (or new version of it) is newly installed and the first time run procedures should be run. 0=The application has already been run.
46
47 static public bool isPro=true; // True = we are running the Pro version. Always true for the open source version.
48 static public bool isEval=true; //True if evalversion of client Non pro feature
49 static public string SelectedGraphicsAdaptersFile; // Name of the file for graphics adapters that corresponds to the users selection of linux kernel
50 static public string SelectedNicAdaptersFile; // Name of the file for network adapters that corresponds to the users selection of linux kernel
51 static public string SelectedSoundAdaptersFile; // Name of the file for sound adapters that corresponds to the users selection of linux kernel
52 static public string ApplicationName; // The name of the application. Used everywhere except for in about box and main window bar. Can be either original or an OEM name.
53 static public string ApplicationTitle = ApplicationName; // The title of the application, used for the main window bar and about box.
54
55 //File names
56 public const string GraphicsAdaptersA = "Graphics30.ats"; //The file containing the list of all graphics adapters
57 public const string NicAdaptersA = "Nic30.ats"; // The file containing the list of all network adapters
58 public const string SoundAdaptersA = "Sound30.ats"; // The file containing the list of all sound adapters
59
60 // Client connect time options
61 public static int[,] ScreenResolutions = new int[,] { { 640, 480 }, { 800, 600 }, { 1024, 600 }, { 1024, 768 }, { 1152, 864 }, { 1280, 768 }, { 1280, 800 }, { 1280, 960 }, { 1280, 1024 }, { 1368, 768 }, { 1400, 1050 }, { 1440, 900 }, { 1440, 1050 }, { 1600, 1000 }, { 1600, 1024 }, { 1600, 1200 }, { 1680, 1050 }, { 1792, 1344 }, { 1856, 1392 }, { 1920, 1080 }, { 1920, 1200 }, { 1920, 1440 } };
62
63 // Constructor
64 static ATSGlobals()
65 {
66 ApplicationName = "Anywhere" + "TS"; // The name of the application. Used everywhere except for in about box and main window bar. Can be either original or an OEM name.
67
68 // Set registry root
69 // This is how we find the OS on run time
70 // on 32 bit OS IntPtr.Size = 4
71 // on 64 bit OS IntPtr.Size = 8
72 if (IntPtr.Size == 8)
73 { // 64 bit OS
74 strATSregRoot = @"SOFTWARE\Wow6432Node\" + ATSGlobals.ApplicationName + @"\ts-config";
75 }
76 else
77 { // 32 bit OS
78 strATSregRoot = @"SOFTWARE\" + ATSGlobals.ApplicationName + @"\ts-config";
79 }
80
81
82 // Set registry root for TFTPD32
83 // This is how we find the OS on run time
84 // on 32 bit OS IntPtr.Size = 4
85 // on 64 bit OS IntPtr.Size = 8
86 if (IntPtr.Size == 8)
87 { // 64 bit OS
88 strTFTPD32RegRoot = @"SOFTWARE\Wow6432Node\TFTPD32";
89 }
90 else
91 { // 32 bit OS
92 strTFTPD32RegRoot = @"SOFTWARE\TFTPD32";
93 }
94
95
96 helpFile = "AnywhereTS.chm"; // The ATS help file
97
98 if (GetATSRegValueInt(strRegRunFirstTime) == 1)
99 { // We are runnning this version for the first time, write the needed registry values
100 CreateRegistryValues();
101 }
102
103 strExecPath = Path.GetDirectoryName(Application.ExecutablePath);
104
105 strHelpFilePath = strExecPath + @"\" + helpFile;
106
107 // Get TFTP config
108 tftpConfig = GetATSRegValueInt(strRegTFTPconfig);
109
110 // Get TFTP root
111 strTFTPdir = GetATSRegValueString(strRegTFTP_root);
112
113 // Get DHCP config
114 dhcpConfig = GetATSRegValueInt(strRegDHCPconfig);
115
116 configured = GetATSRegValueInt(strRegConfigured);
117
118 managedMode = GetATSRegValueInt(strRegManagedMode);
119
120 runFirstTime = GetATSRegValueInt(strRegRunFirstTime);
121
122 // Currently only the 3.0 version of the drivers are supported
123 SelectedGraphicsAdaptersFile = GraphicsAdaptersA;
124 SelectedNicAdaptersFile = NicAdaptersA;
125 SelectedSoundAdaptersFile = SoundAdaptersA;
126
127 }
128
129 // Get a registry string
130 public static string GetATSRegValueString(string regValue)
131 {
132 return GetRegValue(strATSregRoot, regValue);
133 }
134
135
136 // Get a registry integer from the application key
137 public static int GetATSRegValueInt(string regValue)
138 {
139 return GetRegValueInt(strATSregRoot, regValue);
140 }
141
142 // Set a registry integer in the the application key
143 public static void SetATSRegValue(string regValue, int value)
144 {
145 SetRegValue(strATSregRoot, regValue, value);
146 }
147
148 // Set a registry string in the the application key
149 public static void SetATSRegValue(string regValue, string value)
150 {
151 SetRegValue(strATSregRoot, regValue, value);
152 }
153
154 // Get a registry string
155 public static string GetRegValue(string regKey, string regValue)
156 {
157 Microsoft.Win32.RegistryKey objRegkey;
158
159 try
160 {
161 objRegkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKey);
162 }
163 catch (ArgumentNullException ex)
164 {
165 MessageBox.Show("Error when reading from registry. Installation info missing, please run the " + ATSGlobals.ApplicationName + " installation program. (22411)");
166 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", ex.Message, System.Environment.NewLine, ex.ToString())))
167 {
168 using (log4net.NDC.Push("Installation info missing."))
169 {
170 Logging.ATSAdminLog.Error("Error when reading from registry.");
171 }
172 }
173 Application.Exit();
174 return "";
175 }
176 catch (SecurityException ex)
177 {
178 MessageBox.Show("Error when reading from registry. You do not have the necessary permission (22412). Key: "+ regKey + " Value: " + regValue + " Error details:" + ex.Message);
179 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", ex.Message, System.Environment.NewLine, ex.ToString())))
180 {
181 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
182 {
183 using (log4net.NDC.Push("Invalid users rights."))
184 {
185 Logging.ATSAdminLog.Error("Error when reading from registry.");
186 }
187 }
188 }
189 Application.Exit();
190 return "";
191 }
192 catch (Exception ex)
193 {
194 MessageBox.Show("Error when reading from registry (22413). Key: " + regKey + " Value: " + regValue + " Error details:" + ex.Message);
195 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", ex.Message, System.Environment.NewLine, ex.ToString())))
196 {
197 Logging.ATSAdminLog.Error("Error when reading from registry.");
198 }
199 Application.Exit();
200 return "";
201 }
202
203 if (objRegkey != null)
204 {
205 if (objRegkey.GetValue(regValue) != null)
206 {
207 try
208 {
209 return objRegkey.GetValue(regValue).ToString();
210 }
211 catch (Exception e)
212 {
213 MessageBox.Show("Error when reading from registry (22414). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
214 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
215 {
216 Logging.ATSAdminLog.Error("Error when reading from registry.");
217 }
218 Application.Exit();
219 return "";
220 }
221 }
222 else
223 {
224 MessageBox.Show("Error when reading from registry (55222). Value missing. Key: " + regKey + " Value: " + regValue);
225 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
226 {
227 using (log4net.NDC.Push("Value is missing"))
228 {
229 Logging.ATSAdminLog.Error("Error when reading from registry.");
230 }
231 }
232 Application.Exit();
233 return "";
234 }
235 }
236 else
237 {
238 MessageBox.Show("Error when reading from registry (55221). Key missing. Key: " + regKey + " Value: " + strRegTFTP_root);
239 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
240 {
241 using (log4net.NDC.Push("Key is missing"))
242 {
243 Logging.ATSAdminLog.Error("Error when reading from registry.");
244 }
245 }
246 Application.Exit();
247 }
248 return ""; // No value could be retrieved from registry
249 }
250
251 // Get a registry integer
252 public static int GetRegValueInt(string regKey, string regValue)
253 {
254 Microsoft.Win32.RegistryKey objRegkey;
255
256 try
257 {
258 objRegkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKey);
259 }
260 catch (ArgumentNullException ex)
261 {
262 MessageBox.Show("Error when reading from registry. Installation info missing, please run the " + ATSGlobals.ApplicationName + " installation program. (22411)");
263 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", ex.Message, System.Environment.NewLine, ex.ToString())))
264 {
265 using (log4net.NDC.Push("Installation info missing."))
266 {
267 Logging.ATSAdminLog.Error("Error when reading from registry.");
268 }
269 }
270 Application.Exit();
271 return 0;
272 }
273 catch (SecurityException e)
274 {
275 MessageBox.Show("Error when reading from registry. You do not have the necessary permission (22412). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
276 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
277 {
278 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
279 {
280 using (log4net.NDC.Push("Invalid user rights."))
281 {
282 Logging.ATSAdminLog.Error("Error when reading from registry.");
283 }
284 }
285 }
286 Application.Exit();
287 return 0;
288 }
289 catch (Exception e)
290 {
291 MessageBox.Show("Error when reading from registry (22413). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
292 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
293 {
294 Logging.ATSAdminLog.Error("Error when reading from registry.");
295 }
296 Application.Exit();
297 return 0;
298 }
299
300 if (objRegkey != null)
301 {
302 if (objRegkey.GetValue(regValue) != null)
303 {
304 try
305 {
306 return (int)objRegkey.GetValue(regValue);
307 }
308 catch (Exception e)
309 {
310 MessageBox.Show("Error when reading from registry (22414). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
311 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
312 {
313 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
314 {
315 Logging.ATSAdminLog.Error("Error when reading from registry.");
316 }
317 }
318 Application.Exit();
319 return 0;
320 }
321 }
322 else
323 {
324 MessageBox.Show("Error when reading from registry (55222). Value missing. Key: " + regKey + " Value: " + regValue);
325 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
326 {
327 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
328 {
329 using (log4net.NDC.Push("Value is missing"))
330 {
331 Logging.ATSAdminLog.Error("Error when reading from registry.");
332 }
333 }
334 }
335 Application.Exit();
336 return 0;
337 }
338 }
339 else
340 {
341 MessageBox.Show("Error when reading from registry (55221). Key missing. Key: " + regKey + " Value: " + regValue);
342 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
343 {
344 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
345 {
346 using (log4net.NDC.Push("Key is missing"))
347 {
348 Logging.ATSAdminLog.Error("Error when reading from registry.");
349 }
350 }
351 }
352 Application.Exit();
353 }
354 return 0; // No value could be retrieved from registry
355 }
356
357 // Set a registry integer
358 public static void SetRegValue(string regKey, string regValue, int value)
359 {
360 Microsoft.Win32.RegistryKey objRegkey;
361
362 try
363 {
364 objRegkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKey,true);
365 }
366 catch (ArgumentNullException e)
367 {
368 MessageBox.Show("Error when writing to registry. Installation info missing, please run the " + ATSGlobals.ApplicationName + " installation program. (62411)");
369 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
370 {
371 using (log4net.NDC.Push("Installation info missing"))
372 {
373 Logging.ATSAdminLog.Error("Error when writing to registry.");
374 }
375 }
376 Application.Exit();
377 return;
378 }
379 catch (SecurityException e)
380 {
381 MessageBox.Show("Error when writing to registry. You do not have the necessary permission (62412). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
382 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
383 {
384 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
385 {
386 using (log4net.NDC.Push("Invalid user rights"))
387 {
388 Logging.ATSAdminLog.Error("Error when writing to registry.");
389 }
390 }
391 }
392 Application.Exit();
393 return;
394 }
395 catch (Exception e)
396 {
397 MessageBox.Show("Error when reading from registry (62413). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
398 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
399 {
400 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
401 {
402 Logging.ATSAdminLog.Error("Error when reading from registry.");
403 }
404 }
405 Application.Exit();
406 return;
407 }
408
409 if (objRegkey != null)
410 {
411 try
412 {
413 objRegkey.SetValue(regValue, value);
414 }
415 catch (Exception e)
416 {
417 MessageBox.Show("Error when writing to registry (62414). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
418 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
419 {
420 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
421 {
422 Logging.ATSAdminLog.Error("Error when writing to registry.");
423 }
424 }
425 Application.Exit();
426 }
427 }
428 else
429 {
430 MessageBox.Show("Error when writing to registry (65222). Key missing. Key: " + regKey + " Value: " + regValue);
431
432 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
433 {
434 using (log4net.NDC.Push("Key is missing"))
435 {
436 Logging.ATSAdminLog.Error("Error when writing to registry.");
437 }
438 }
439
440 Application.Exit();
441 }
442 }
443
444 // Set a registry string
445 public static void SetRegValue(string regKey, string regValue, string value)
446 {
447 Microsoft.Win32.RegistryKey objRegkey;
448
449 try
450 {
451 objRegkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKey, true);
452 }
453 catch (ArgumentNullException e)
454 {
455 MessageBox.Show("Error when writing to registry. Installation info missing, please run the " + ATSGlobals.ApplicationName + " installation program. (62411)");
456 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
457 {
458 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
459 {
460 Logging.ATSAdminLog.Error("Error when writing to registry.");
461 }
462 }
463 Application.Exit();
464 return;
465 }
466 catch (SecurityException e)
467 {
468 MessageBox.Show("Error when writing to registry. You do not have the necessary permission (62412). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
469 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
470 {
471 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
472 {
473 using (log4net.NDC.Push("Invalid user rights"))
474 {
475 Logging.ATSAdminLog.Error("Error when writing to registry.");
476 }
477 }
478 }
479 Application.Exit();
480 return;
481 }
482 catch (Exception e)
483 {
484 MessageBox.Show("Error when reading from registry (62413). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
485 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
486 {
487 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
488 {
489 Logging.ATSAdminLog.Error("Error when reading from registry.");
490 }
491 }
492 Application.Exit();
493 return;
494 }
495
496 if (objRegkey != null)
497 {
498 try
499 {
500 objRegkey.SetValue(regValue, value);
501 }
502 catch (Exception e)
503 {
504 MessageBox.Show("Error when writing to registry (62414). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
505 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
506 {
507 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
508 {
509 Logging.ATSAdminLog.Error("Error when writing to registry.");
510 }
511 }
512 Application.Exit();
513 }
514 }
515 else
516 {
517 MessageBox.Show("Error when writing to registry (65222). Key missing. Key: " + regKey + " Value: " + regValue);
518 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
519 {
520 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
521 {
522 using (log4net.NDC.Push("Key is missing"))
523 {
524 Logging.ATSAdminLog.Error("Error when writing to registry.");
525 }
526 }
527 }
528 Application.Exit();
529 }
530 }
531
532 // Check if a registry int value exists
533 public static bool RegValueExists(string regKey, string regValue)
534 {
535 Microsoft.Win32.RegistryKey objRegkey;
536
537 try
538 {
539 objRegkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKey);
540 }
541 catch (ArgumentNullException)
542 {
543 MessageBox.Show("Error when reading from registry. Installation info missing, please run the " + ATSGlobals.ApplicationName + " installation program. (29411)");
544 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
545 {
546 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
547 {
548 using (log4net.NDC.Push("Installation info missing"))
549 {
550 Logging.ATSAdminLog.Error("Error when reading from registry.");
551 }
552 }
553 }
554 Application.Exit();
555 return false;
556 }
557 catch (SecurityException e)
558 {
559 MessageBox.Show("Error when reading from registry. You do not have the necessary permission (29412). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
560 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
561 {
562 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
563 {
564 using (log4net.NDC.Push("Invalid user rights"))
565 {
566 Logging.ATSAdminLog.Error("Error when reading from registry.");
567 }
568 }
569 }
570 Application.Exit();
571 return false;
572 }
573 catch (Exception e)
574 {
575 MessageBox.Show("Error when reading from registry (29413). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
576 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
577 {
578 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
579 {
580 Logging.ATSAdminLog.Error("Error when reading from registry.");
581 }
582 }
583 Application.Exit();
584 return false;
585 }
586
587 if (objRegkey != null)
588 {
589 if (objRegkey.GetValue(regValue) != null)
590 {
591 return true; // We could retrive the value
592 }
593 else
594 {
595 return false; // No value found
596 }
597 }
598 else
599 {
600 MessageBox.Show("Error when reading from registry (59221). Key missing. Key: " + regKey + " Value: " + strRegTFTP_root);
601 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
602 {
603 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
604 {
605 using (log4net.NDC.Push("Key is missing"))
606 {
607 Logging.ATSAdminLog.Error("Error when reading from registry.");
608 }
609 }
610 }
611 Application.Exit();
612 }
613 return false; // No value could be retrieved from registry
614 }
615
616 // Validate MAC a MAC address.
617 public static string IsValidMAC(string macAddress)
618 {
619 macAddress = macAddress.Replace(":", "");
620 macAddress = macAddress.ToUpper();
621 string result = "";
622 Regex rx = new Regex("([0-9a-fA-F][0-9a-fA-F]-){5}([0-9a-fA-F][0-9a-fA-F])", RegexOptions.IgnoreCase);
623 Match m = rx.Match(macAddress);
624 result = m.Groups[0].Value;
625 if (result.Length == 17)
626 {
627 return result;
628 }
629 else
630 {
631 rx = new Regex("([0-9a-fA-F][0-9a-fA-F]){5}([0-9a-fA-F][0-9a-fA-F])", RegexOptions.IgnoreCase);
632 Match m2 = rx.Match(macAddress);
633 result = m2.Groups[0].Value;
634 if (result.Length == 12)
635 {
636 return result;
637 }
638 return result;
639 }
640 }
641
642 // Try to extract a mac address from an ATS client name in the format 'ATSxxxxxxxxxxxx', where xxxxxxxxxx is a mac address.
643 public static string GetMacFromATSname(string name)
644 {
645 string strMac;
646 if (name.Length != 15)
647 {
648 return ""; // Not an ATS name
649 }
650 if (!name.StartsWith("ATS"))
651 {
652 return ""; // Not an ATS name
653 }
654 strMac = ATSGlobals.IsValidMAC(name.Substring(3));
655 if (strMac == "")
656 {
657 return ""; // Not an ATS name
658 }
659 // We have a MAC address
660 return strMac;
661 }
662
663 // Create all needed registry values
664 public static void CreateRegistryValues()
665 {
666 // Create registry values for ATS Admin Application
667 CreateRegistryValue(strATSregRoot, "CheckUpdate", 1);
668 CreateRegistryValue(strATSregRoot, strRegConfigured, 0);
669 CreateRegistryValue(strATSregRoot, ProSupport.strRegDatabaseDir, "");
670 CreateRegistryValue(strATSregRoot, ProSupport.strRegDatabaseServer, "");
671 CreateRegistryValue(strATSregRoot, ProSupport.strRegDestDir, "");
672 CreateRegistryValue(strATSregRoot, strRegDHCPconfig , 0);
673 CreateRegistryValue(strATSregRoot, strRegManagedMode, 1);
674 CreateRegistryValue(strATSregRoot, strRegTerminalServer, 0);
675 CreateRegistryValue(strATSregRoot, strRegTFTPconfig, 0);
676 CreateRegistryValue(strATSregRoot, strRegTFTP_root,"");
677
678 // Check if the admin app is intalled on this computer and if so, add reg values for TFTP 32
679 if (RegValueExists(strATSregRoot, strRegAdminVersion))
680 { // The admin app is installed, define keys for TFTP32. These should not be installed for the control panel.
681 // Create registry values for TFTPD32
682 CreateRegistryValue(strTFTPD32RegRoot, "BaseDirectory", "");
683 CreateRegistryValue(strTFTPD32RegRoot, "Beep", 0);
684 CreateRegistryValue(strTFTPD32RegRoot, "DirText", 0);
685 CreateRegistryValue(strTFTPD32RegRoot, "Hide", 0);
686 CreateRegistryValue(strTFTPD32RegRoot, "LastWindowPos", "60 49 860 642 ");
687 CreateRegistryValue(strTFTPD32RegRoot, "LocalIP", "");
688 CreateRegistryValue(strTFTPD32RegRoot, "MaxRetransmit", 6);
689 CreateRegistryValue(strTFTPD32RegRoot, "Negociate", 1);
690 CreateRegistryValue(strTFTPD32RegRoot, "PXECompatibility", 0);
691 CreateRegistryValue(strTFTPD32RegRoot, "SaveSyslogFile", "");
692 CreateRegistryValue(strTFTPD32RegRoot, "SecurityLevel", 1);
693 CreateRegistryValue(strTFTPD32RegRoot, "Services", 2);
694 CreateRegistryValue(strTFTPD32RegRoot, "ShowProgressBar", 0);
695 CreateRegistryValue(strTFTPD32RegRoot, "TftpLogFile", "");
696 CreateRegistryValue(strTFTPD32RegRoot, "TftpPort", 69);
697 CreateRegistryValue(strTFTPD32RegRoot, "Timeout", 3);
698 CreateRegistryValue(strTFTPD32RegRoot, "UnixStrings", 1);
699 CreateRegistryValue(strTFTPD32RegRoot, "VirtualRoot", 1);
700 CreateRegistryValue(strTFTPD32RegRoot, "WinSize", 0);
701
702 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "AddOptionNumber1", 0);
703 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "AddOptionNumber2", 0);
704 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "AddOptionValue1", "");
705 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "AddOptionValue2", "");
706 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "BootFile", "client.zpxe");
707 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "DNS", 16834314);
708 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "DomainName", "");
709 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "Gateway", 16834314);
710 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "IP_Pool", 335601418);
711 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "Mask", 65535);
712 CreateRegistryValue(strTFTPD32RegRoot + @"\DHCP", "PoolSize", 200);
713 }
714 }
715
716 // If a registry key does not exist, create it with the given default value
717 public static void CreateRegistryValue(string regKey, string regValue, int value)
718 {
719 Microsoft.Win32.RegistryKey objRegkey;
720
721 try
722 {
723 objRegkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKey);
724 }
725 catch (ArgumentNullException e)
726 {
727 MessageBox.Show("Error when reading from registry. Installation info missing, please run the " + ATSGlobals.ApplicationName + " installation program. (92411)");
728 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
729 {
730 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
731 {
732 using (log4net.NDC.Push("Installation info missing"))
733 {
734 Logging.ATSAdminLog.Error("Error when reading from registry.");
735 }
736 }
737 }
738 Application.Exit();
739 return;
740 }
741 catch (SecurityException e)
742 {
743 MessageBox.Show("Error when reading from registry. You do not have the necessary permission (92412). Key: "+ regKey + " Value: " + regValue + " Error details:" + e.Message);
744 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
745 {
746 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
747 {
748 using (log4net.NDC.Push("Invalid user rights"))
749 {
750 Logging.ATSAdminLog.Error("Error when reading from registry.");
751 }
752 }
753 }
754 Application.Exit();
755 return;
756 }
757 catch (Exception e)
758 {
759 MessageBox.Show("Error when reading from registry (92413). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
760 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
761 {
762 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
763 {
764 Logging.ATSAdminLog.Error("Error when reading from registry.");
765
766 }
767 }
768 Application.Exit();
769 return;
770 }
771
772 if (objRegkey != null)
773 {
774 if (objRegkey.GetValue(regValue) == null)
775 { // No reg value, create one
776 SetRegValue(regKey, regValue, value);
777 }
778 }
779 else
780 {
781 MessageBox.Show("Error when reading from registry (95221). Key missing. Key: " + regKey + " Value: " + strRegTFTP_root);
782 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
783 {
784 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
785 {
786 Logging.ATSAdminLog.Error("Error when reading from registry.");
787 }
788 }
789 Application.Exit();
790 }
791 }
792
793
794
795 // If a registry key does not exist, create it with the given default value
796 public static void CreateRegistryValue(string regKey, string regValue, string value)
797 {
798 Microsoft.Win32.RegistryKey objRegkey;
799
800 try
801 {
802 objRegkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(regKey);
803 }
804 catch (ArgumentNullException e)
805 {
806 MessageBox.Show("Error when reading from registry. Installation info missing, please run the " + ATSGlobals.ApplicationName + " installation program. (92411)");
807 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
808 {
809 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
810 {
811 using (log4net.NDC.Push("Installation info missing"))
812 {
813 Logging.ATSAdminLog.Error("Error when reading from registry.");
814 }
815 }
816 }
817 Application.Exit();
818 return;
819 }
820 catch (SecurityException e)
821 {
822 MessageBox.Show("Error when reading from registry. You do not have the necessary permission (92412). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
823 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
824 {
825 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
826 {
827 using (log4net.NDC.Push("Invalid users rights"))
828 {
829 Logging.ATSAdminLog.Error("Error when reading from registry.");
830 }
831 }
832 }
833 Application.Exit();
834 return;
835 }
836 catch (Exception e)
837 {
838 MessageBox.Show("Error when reading from registry (92413). Key: " + regKey + " Value: " + regValue + " Error details:" + e.Message);
839 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
840 {
841 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
842 {
843 Logging.ATSAdminLog.Error("Error when reading from registry.");
844 }
845 }
846 Application.Exit();
847 return;
848 }
849
850 if (objRegkey != null)
851 {
852 if (objRegkey.GetValue(regValue) == null)
853 { // No reg value, create one
854 SetRegValue(regKey, regValue, value);
855 }
856 }
857 else
858 {
859 MessageBox.Show("Error when reading from registry (95221). Key missing. Key: " + regKey + " Value: " + strRegTFTP_root);
860 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
861 {
862 using (log4net.NDC.Push(string.Format("key={0} value={1}", regKey, regValue)))
863 {
864 Logging.ATSAdminLog.Error("Error when reading from registry.");
865 }
866 }
867 Application.Exit();
868 }
869 }
870
871 // Extract two integers from a string, separated by a character
872 // Result: True = extraction ok, false = invalid string.
873 // twointegers: String with two integers, separated by a character
874 // separator: the character separating the strings
875 // value1: (out) The first integer in the string
876 // value2: (out) The second integer in the string
877 public static bool ExtractIntegers(string twointegers, char separator, out int value1, out int value2)
878 {
879 string[] parts;
880 value1 = 0; // Default
881 value2 = 0; // Default
882 parts = twointegers.Split(separator);
883 if (parts.Length != 2)
884 {
885 return false;
886 }
887 // Convert and return
888 value1 = Convert.ToInt32(parts[0]); // Default
889 value2 = Convert.ToInt32(parts[1]); // Default
890 return true;
891 }
892
893 } // Class ATSGlobals
894 } // Namespace Anywhere TS