Commit ab4d66d6c193c7186f9378c170be6f9809abe3c2
1 parent
17723d0c
v1.19.3.0
- windows service display name és description korrekt definiálása a szerviz regisztrációjakor
Showing
2 changed files
with
76 additions
and
50 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs
... | ... | @@ -504,51 +504,74 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
504 | 504 | // sc.exe create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= +TDI NetBIOS |
505 | 505 | // |
506 | 506 | // sc.exe [<servername>] create [<servicename>] |
507 | - // [type= {own | share | kernel | filesys | rec | interact type= {own | share}}] | |
508 | - // [start= {boot | system | auto | demand | disabled | delayed-auto}] | |
509 | - // [error= {normal | severe | critical | ignore}] | |
510 | - // [binpath= <binarypathname>] | |
511 | - // [group= <loadordergroup>] | |
512 | - // [tag= {yes | no}] | |
513 | - // [depend= <dependencies>] | |
514 | - // [obj= {<accountname> | <objectname>}] | |
515 | - // [displayname= <displayname>] | |
516 | - // [password= <password>] | |
507 | + // [type= {own | share | kernel | filesys | rec | interact type= {own | share}}] | |
508 | + // [start= {boot | system | auto | demand | disabled | delayed-auto}] | |
509 | + // [error= {normal | severe | critical | ignore}] | |
510 | + // [binpath= <binarypathname>] | |
511 | + // [group= <loadordergroup>] | |
512 | + // [tag= {yes | no}] | |
513 | + // [depend= <dependencies>] | |
514 | + // [obj= {<accountname> | <objectname>}] | |
515 | + // [displayname= <displayname>] | |
516 | + // [password= <password>] | |
517 | + // sc description TestService1 "This is the description of the service.." | |
517 | 518 | |
518 | 519 | ProcessStartInfo startInfo = new ProcessStartInfo(); |
519 | 520 | startInfo.CreateNoWindow = false; |
520 | 521 | startInfo.UseShellExecute = true; |
521 | 522 | startInfo.FileName = "sc.exe"; |
522 | 523 | startInfo.WindowStyle = ProcessWindowStyle.Hidden; |
523 | - List<string> argumentlist = new List<string>(); | |
524 | - argumentlist.Add($"create"); argumentlist.Add(ws.Name.Quote()); | |
525 | - argumentlist.Add("displayname="); argumentlist.Add(ws.DisplayName.Quote()); | |
524 | + | |
525 | + try | |
526 | + { | |
527 | + startInfo.Arguments = BuildArgumentListCreate(ws, dependencygroupservicenamelist); | |
528 | + ColorConsole.WriteLine(startInfo.FileName + " " + startInfo.Arguments); | |
529 | + using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); } | |
530 | + | |
531 | + startInfo.Arguments = String.Join(" ", BuildArgumentListSetDescription(ws, dependencygroupservicenamelist)); | |
532 | + ColorConsole.WriteLine(startInfo.FileName + " " + startInfo.Arguments); | |
533 | + using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); } | |
534 | + } | |
535 | + catch (Exception ex) | |
536 | + { | |
537 | + ColorConsole.WriteLine(ex.Message); | |
538 | + if(ex.InnerException!=null) ColorConsole.WriteLine(ex.InnerException.Message); | |
539 | + } | |
540 | + return true; | |
541 | + } | |
542 | + private static string BuildArgumentListSetDescription(WindowsService ws, List<string> dependencygroupservicenamelist) | |
543 | + { | |
544 | + var argumentlistsetdescription = new List<string>(); | |
545 | + argumentlistsetdescription.Add($"description"); | |
546 | + argumentlistsetdescription.Add(ws.Name.Quote()); | |
547 | + argumentlistsetdescription.Add(ws.Xml_Description.Quote()); | |
548 | + return String.Join(" ", argumentlistsetdescription); | |
549 | + } | |
550 | + private static string BuildArgumentListCreate(WindowsService ws, List<string> dependencygroupservicenamelist) | |
551 | + { | |
552 | + List<string> argumentlistregister = new List<string>(); | |
553 | + argumentlistregister.Add($"create"); argumentlistregister.Add(ws.Name.Quote()); | |
554 | + argumentlistregister.Add("displayname="); argumentlistregister.Add(ws.Xml_DisplayName.Quote()); | |
526 | 555 | if (ws.Xml_IdentityType == ServiceAccount.User) |
527 | 556 | { |
528 | - argumentlist.Add($"obj="); argumentlist.Add(ws.Xml_Username.Quote()); | |
529 | - argumentlist.Add("password="); argumentlist.Add(ws.Xml_Password.Quote()); | |
557 | + argumentlistregister.Add($"obj="); argumentlistregister.Add(ws.Xml_Username.Quote()); | |
558 | + argumentlistregister.Add("password="); argumentlistregister.Add(ws.Xml_Password.Quote()); | |
530 | 559 | } |
531 | 560 | else |
532 | 561 | { |
533 | - argumentlist.Add($"obj="); argumentlist.Add(ws.Xml_IdentityType.ToString().Quote()); | |
562 | + argumentlistregister.Add($"obj="); argumentlistregister.Add(ws.Xml_IdentityType.ToString().Quote()); | |
534 | 563 | } |
535 | 564 | |
536 | 565 | // dependency csoport feldolgozása |
537 | 566 | var effectivedependonlist = new List<string>(); |
538 | - foreach (var sn in ws.Xml_Dependon) { if (dependencygroupservicenamelist.Contains(sn)) { effectivedependonlist.Add(sn); } } | |
539 | - foreach (var sn in ws.Xml_Dependon) { if (dependencygroupservicenamelist==null || !dependencygroupservicenamelist.Any() || dependencygroupservicenamelist.Contains("*") || dependencygroupservicenamelist.Contains(sn)) { effectivedependonlist.Add(sn); } } | |
567 | + foreach (var sn in ws.Xml_Dependon) { if (dependencygroupservicenamelist == null || !dependencygroupservicenamelist.Any() || dependencygroupservicenamelist.Contains("*") || dependencygroupservicenamelist.Contains(sn)) { effectivedependonlist.Add(sn); } } | |
540 | 568 | //--------------------------------------- |
541 | 569 | |
542 | 570 | var dependonparameter = String.Join("/", effectivedependonlist); |
543 | - argumentlist.Add($"depend="); argumentlist.Add(dependonparameter.Quote()); | |
571 | + argumentlistregister.Add($"depend="); argumentlistregister.Add(dependonparameter.Quote()); | |
544 | 572 | |
545 | - var startparameter = | |
546 | - ws.Xml_StartMode == ServiceStartMode.Automatic ? "auto" | |
547 | - : ws.Xml_StartMode == ServiceStartMode.Manual ? "demand" | |
548 | - : ws.Xml_StartMode == ServiceStartMode.Disabled ? "disabled" | |
549 | - : ws.Xml_StartMode == ServiceStartMode.Boot ? "boot" | |
550 | - : "system"; | |
551 | - argumentlist.Add($"start="); argumentlist.Add(startparameter.Quote()); | |
573 | + var startparameter = WindowsService.ServiceStartModeToString(ws.Xml_StartMode); | |
574 | + argumentlistregister.Add($"start="); argumentlistregister.Add(startparameter.Quote()); | |
552 | 575 | |
553 | 576 | var registerarguments = ""; |
554 | 577 | switch (ws.Xml_RegistrationMode) |
... | ... | @@ -572,20 +595,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
572 | 595 | break; |
573 | 596 | } |
574 | 597 | var binpathparameter = Path.Combine(ws.Xml_InstallDir, ws.Xml_Exe).Quote() + " " + registerarguments; |
575 | - argumentlist.Add($"binpath="); argumentlist.Add(binpathparameter.Quote()); | |
576 | - | |
577 | - startInfo.Arguments = String.Join(" ", argumentlist); | |
578 | - | |
579 | - ColorConsole.WriteLine(startInfo.FileName + " " + startInfo.Arguments); | |
580 | - try | |
581 | - { | |
582 | - using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); } | |
583 | - } | |
584 | - catch | |
585 | - { | |
586 | - // Log error. | |
587 | - } | |
588 | - return true; | |
598 | + argumentlistregister.Add($"binpath="); argumentlistregister.Add(binpathparameter.Quote()); | |
599 | + return String.Join(" ", argumentlistregister); | |
589 | 600 | } |
590 | 601 | #endregion Register |
591 | 602 | |
... | ... | @@ -886,14 +897,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
886 | 897 | this.ServicesDependOnThis = service.DependentServices.Select(s => s.ServiceName).ToList(); |
887 | 898 | try { this.ThisDependsOn = service.ServicesDependedOn.Select(s => s.ServiceName).ToList(); } catch { this.ThisDependsOn = new List<string>() { "???" }; } |
888 | 899 | this.PathName = (string)wmiService[nameof(WindowsService.PathName)]; if (this.PathName == null) { this.PathName = ""; } |
889 | - var sm = (string)wmiService[nameof(WindowsService.StartMode)]; | |
890 | - this.StartMode = | |
891 | - sm == "Auto" ? ServiceStartMode.Automatic | |
892 | - : sm == "Auto" ? ServiceStartMode.Manual | |
893 | - : sm == "Auto" ? ServiceStartMode.Disabled | |
894 | - : sm == "Auto" ? ServiceStartMode.Boot | |
895 | - : sm == "Auto" ? ServiceStartMode.System | |
896 | - : ServiceStartMode.Manual; | |
900 | + var sm = ((string)wmiService[nameof(WindowsService.StartMode)]).ToLower(); | |
901 | + this.StartMode = StringToServiceStartMode(sm); | |
897 | 902 | this.State = (string)wmiService[nameof(WindowsService.State)]; |
898 | 903 | this.Status = (string)wmiService[nameof(WindowsService.Status)]; |
899 | 904 | this.StartName = (string)wmiService[nameof(WindowsService.StartName)]; |
... | ... | @@ -911,6 +916,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS |
911 | 916 | } |
912 | 917 | #endregion public CollectWindowsServiceInfo |
913 | 918 | |
919 | + public static string ServiceStartModeToString(ServiceStartMode sm) | |
920 | + { | |
921 | + return | |
922 | + sm == ServiceStartMode.Automatic ? "auto" | |
923 | + : sm == ServiceStartMode.Manual ? "demand" | |
924 | + : sm == ServiceStartMode.Disabled ? "disabled" | |
925 | + : sm == ServiceStartMode.Boot ? "boot" | |
926 | + : sm == ServiceStartMode.System ? "system" | |
927 | + : "system"; | |
928 | + } | |
929 | + public static ServiceStartMode StringToServiceStartMode(string sm) | |
930 | + { | |
931 | + return | |
932 | + sm == "auto" ? ServiceStartMode.Automatic | |
933 | + : sm == "disabled" ? ServiceStartMode.Disabled | |
934 | + : sm == "boot" ? ServiceStartMode.Boot | |
935 | + : sm == "system" ? ServiceStartMode.System | |
936 | + : sm == "demand" ? ServiceStartMode.Manual | |
937 | + : ServiceStartMode.Manual; | |
938 | + } | |
939 | + | |
914 | 940 | #endregion xml constructor |
915 | 941 | #region cloner constructor |
916 | 942 | public WindowsService(WindowsService ws) | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
... | ... | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; |
32 | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
33 | 33 | // by using the '*' as shown below: |
34 | 34 | // [assembly: AssemblyVersion("1.0.*")] |
35 | -[assembly: AssemblyVersion("1.19.2.0")] | |
36 | -[assembly: AssemblyFileVersion("1.19.2.0")] | |
35 | +[assembly: AssemblyVersion("1.19.3.0")] | |
36 | +[assembly: AssemblyFileVersion("1.19.3.0")] | ... | ... |