/Terminals-v2.1/Network/WMI/Services.cs

# · C# · 193 lines · 174 code · 19 blank · 0 comment · 37 complexity · f63aad8e21732dba7fe9d58ac2deda9e MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Management;
  9. namespace Terminals.Network.WMI {
  10. public partial class Services : UserControl {
  11. public Services() {
  12. InitializeComponent();
  13. }
  14. private List<System.Management.ManagementObject> list = new List<ManagementObject>();
  15. private void LoadServices(string Username, string Password, string Computer)
  16. {
  17. System.Text.StringBuilder sb = new StringBuilder();
  18. string qry = "select AcceptPause, AcceptStop, Caption, CheckPoint, CreationClassName, Description, DesktopInteract, DisplayName, ErrorControl, ExitCode, InstallDate, Name, PathName, ProcessId,ServiceSpecificExitCode, ServiceType, Started, StartMode, StartName, State, Status, SystemCreationClassName, SystemName, TagId, WaitHint from win32_service";
  19. System.Management.ManagementObjectSearcher searcher;
  20. System.Management.ObjectQuery query = new System.Management.ObjectQuery(qry);
  21. if (Username != "" && Password != "" && Computer != "" && !Computer.StartsWith(@"\\localhost"))
  22. {
  23. System.Management.ConnectionOptions oConn = new System.Management.ConnectionOptions();
  24. oConn.Username = Username;
  25. oConn.Password = Password;
  26. if (!Computer.StartsWith(@"\\")) Computer = @"\\" + Computer;
  27. if (!Computer.ToLower().EndsWith(@"\root\cimv2")) Computer = Computer + @"\root\cimv2";
  28. System.Management.ManagementScope oMs = new System.Management.ManagementScope(Computer, oConn);
  29. searcher = new System.Management.ManagementObjectSearcher(oMs, query);
  30. }
  31. else
  32. {
  33. searcher = new System.Management.ManagementObjectSearcher(query);
  34. }
  35. System.Data.DataTable dt = new DataTable();
  36. bool needsSchema = true;
  37. int length = 0;
  38. object[] values = null;
  39. list.Clear();
  40. foreach (System.Management.ManagementObject share in searcher.Get())
  41. {
  42. Share s = new Share();
  43. list.Add(share);
  44. if (needsSchema)
  45. {
  46. foreach (System.Management.PropertyData p in share.Properties)
  47. {
  48. System.Data.DataColumn col = new DataColumn(p.Name, ConvertCimType(p.Type));
  49. dt.Columns.Add(col);
  50. }
  51. length = share.Properties.Count;
  52. needsSchema = false;
  53. }
  54. if (values == null) values = new object[length];
  55. int x = 0;
  56. foreach (System.Management.PropertyData p in share.Properties)
  57. {
  58. if (p != null && x < length)
  59. {
  60. values[x] = p.Value;
  61. x++;
  62. }
  63. }
  64. dt.Rows.Add(values);
  65. values = null;
  66. }
  67. this.dataGridView1.DataSource = dt;
  68. }
  69. private void Services_Load(object sender, EventArgs e) {
  70. LoadServices("", "", "");
  71. }
  72. private void button1_Click(object sender, EventArgs e) {
  73. LoadServices(this.wmiServerCredentials1.Username, this.wmiServerCredentials1.Password, this.wmiServerCredentials1.SelectedServer);
  74. }
  75. private System.Type ConvertCimType(CimType ctValue) {
  76. System.Type tReturnVal = null;
  77. switch(ctValue) {
  78. case CimType.Boolean:
  79. tReturnVal = typeof(System.Boolean);
  80. break;
  81. case CimType.Char16:
  82. tReturnVal = typeof(System.String);
  83. break;
  84. case CimType.DateTime:
  85. tReturnVal = typeof(System.DateTime);
  86. break;
  87. case CimType.Object:
  88. tReturnVal = typeof(System.Object);
  89. break;
  90. case CimType.Real32:
  91. tReturnVal = typeof(System.Decimal);
  92. break;
  93. case CimType.Real64:
  94. tReturnVal = typeof(System.Decimal);
  95. break;
  96. case CimType.Reference:
  97. tReturnVal = typeof(System.Object);
  98. break;
  99. case CimType.SInt16:
  100. tReturnVal = typeof(System.Int16);
  101. break;
  102. case CimType.SInt32:
  103. tReturnVal = typeof(System.Int32);
  104. break;
  105. case CimType.SInt8:
  106. tReturnVal = typeof(System.Int16);
  107. break;
  108. case CimType.String:
  109. tReturnVal = typeof(System.String);
  110. break;
  111. case CimType.UInt16:
  112. tReturnVal = typeof(System.UInt16);
  113. break;
  114. case CimType.UInt32:
  115. tReturnVal = typeof(System.UInt32);
  116. break;
  117. case CimType.UInt64:
  118. tReturnVal = typeof(System.UInt64);
  119. break;
  120. case CimType.UInt8:
  121. tReturnVal = typeof(System.UInt16);
  122. break;
  123. }
  124. return tReturnVal;
  125. }
  126. private System.Management.ManagementObject FindWMIObject(string name, string propname) {
  127. System.Management.ManagementObject foundObj = null;
  128. foreach(System.Management.ManagementObject obj in list) {
  129. if(obj.Properties[propname].Value.ToString() == name) {
  130. foundObj = obj;
  131. break;
  132. }
  133. }
  134. return foundObj;
  135. }
  136. private void pauseToolStripMenuItem_Click(object sender, EventArgs e) {
  137. string name = this.dataGridView1.Rows[this.dataGridView1.SelectedCells[0].RowIndex].Cells["Name"].Value.ToString();
  138. if(name != null && name != "") {
  139. System.Management.ManagementObject obj = FindWMIObject(name, "Name");
  140. if(obj != null) {
  141. obj.InvokeMethod("PauseService", null);
  142. LoadServices(this.wmiServerCredentials1.Username, this.wmiServerCredentials1.Password, this.wmiServerCredentials1.SelectedServer);
  143. }
  144. }
  145. }
  146. private void stopToolStripMenuItem_Click(object sender, EventArgs e) {
  147. string name = this.dataGridView1.Rows[this.dataGridView1.SelectedCells[0].RowIndex].Cells["Name"].Value.ToString();
  148. if(name != null && name != "") {
  149. System.Management.ManagementObject obj = FindWMIObject(name, "Name");
  150. if(obj != null) {
  151. obj.InvokeMethod("StopService", null);
  152. LoadServices(this.wmiServerCredentials1.Username, this.wmiServerCredentials1.Password, this.wmiServerCredentials1.SelectedServer);
  153. }
  154. }
  155. }
  156. private void startToolStripMenuItem_Click(object sender, EventArgs e) {
  157. string name = this.dataGridView1.Rows[this.dataGridView1.SelectedCells[0].RowIndex].Cells["Name"].Value.ToString();
  158. if(name != null && name != "") {
  159. System.Management.ManagementObject obj = FindWMIObject(name, "Name");
  160. if(obj != null) {
  161. obj.InvokeMethod("StartService", null);
  162. LoadServices(this.wmiServerCredentials1.Username, this.wmiServerCredentials1.Password, this.wmiServerCredentials1.SelectedServer);
  163. }
  164. }
  165. }
  166. private void wmiServerCredentials1_KeyUp(object sender, KeyEventArgs e)
  167. {
  168. if (e.KeyCode == Keys.Enter)
  169. {
  170. button1_Click(null, null);
  171. }
  172. }
  173. }
  174. }