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,51 +504,74 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS | ||
| 504 | // sc.exe create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= +TDI NetBIOS | 504 | // sc.exe create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= +TDI NetBIOS |
| 505 | // | 505 | // |
| 506 | // sc.exe [<servername>] create [<servicename>] | 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 | ProcessStartInfo startInfo = new ProcessStartInfo(); | 519 | ProcessStartInfo startInfo = new ProcessStartInfo(); |
| 519 | startInfo.CreateNoWindow = false; | 520 | startInfo.CreateNoWindow = false; |
| 520 | startInfo.UseShellExecute = true; | 521 | startInfo.UseShellExecute = true; |
| 521 | startInfo.FileName = "sc.exe"; | 522 | startInfo.FileName = "sc.exe"; |
| 522 | startInfo.WindowStyle = ProcessWindowStyle.Hidden; | 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 | if (ws.Xml_IdentityType == ServiceAccount.User) | 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 | else | 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 | // dependency csoport feldolgozása | 565 | // dependency csoport feldolgozása |
| 537 | var effectivedependonlist = new List<string>(); | 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 | var dependonparameter = String.Join("/", effectivedependonlist); | 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 | var registerarguments = ""; | 576 | var registerarguments = ""; |
| 554 | switch (ws.Xml_RegistrationMode) | 577 | switch (ws.Xml_RegistrationMode) |
| @@ -572,20 +595,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS | @@ -572,20 +595,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS | ||
| 572 | break; | 595 | break; |
| 573 | } | 596 | } |
| 574 | var binpathparameter = Path.Combine(ws.Xml_InstallDir, ws.Xml_Exe).Quote() + " " + registerarguments; | 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 | #endregion Register | 601 | #endregion Register |
| 591 | 602 | ||
| @@ -886,14 +897,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS | @@ -886,14 +897,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS | ||
| 886 | this.ServicesDependOnThis = service.DependentServices.Select(s => s.ServiceName).ToList(); | 897 | this.ServicesDependOnThis = service.DependentServices.Select(s => s.ServiceName).ToList(); |
| 887 | try { this.ThisDependsOn = service.ServicesDependedOn.Select(s => s.ServiceName).ToList(); } catch { this.ThisDependsOn = new List<string>() { "???" }; } | 898 | try { this.ThisDependsOn = service.ServicesDependedOn.Select(s => s.ServiceName).ToList(); } catch { this.ThisDependsOn = new List<string>() { "???" }; } |
| 888 | this.PathName = (string)wmiService[nameof(WindowsService.PathName)]; if (this.PathName == null) { this.PathName = ""; } | 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 | this.State = (string)wmiService[nameof(WindowsService.State)]; | 902 | this.State = (string)wmiService[nameof(WindowsService.State)]; |
| 898 | this.Status = (string)wmiService[nameof(WindowsService.Status)]; | 903 | this.Status = (string)wmiService[nameof(WindowsService.Status)]; |
| 899 | this.StartName = (string)wmiService[nameof(WindowsService.StartName)]; | 904 | this.StartName = (string)wmiService[nameof(WindowsService.StartName)]; |
| @@ -911,6 +916,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS | @@ -911,6 +916,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS | ||
| 911 | } | 916 | } |
| 912 | #endregion public CollectWindowsServiceInfo | 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 | #endregion xml constructor | 940 | #endregion xml constructor |
| 915 | #region cloner constructor | 941 | #region cloner constructor |
| 916 | public WindowsService(WindowsService ws) | 942 | public WindowsService(WindowsService ws) |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
| @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | ||
| 32 | // You can specify all the values or you can default the Build and Revision Numbers | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
| 33 | // by using the '*' as shown below: | 33 | // by using the '*' as shown below: |
| 34 | // [assembly: AssemblyVersion("1.0.*")] | 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")] |