源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

怎么利用c#修改services的Startup type

  • 时间:2022-11-21 21:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:怎么利用c#修改services的Startup type
我们知道大部分的services的操作可以通过ServiceController来实现,包括services的开启,停止,暂停,还有获取service的status。但是这里关于services的修改Startup type这点,貌似ServiceController不好做到,我们可以这样来做:
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management; namespace ServicesStartup {     class Program     {         public enum StartupType         {             Automatic,             Disabled,             Manual         }         public static void SetStartupType(string serviceName, StartupType startupType)         {             string type = startupType.ToString();             try             {                 ManagementPath mp = new ManagementPath(string.Format("Win32_Service.Name='{0}'", serviceName));                 if (mp != null)                 {                     using (ManagementObject mo = new ManagementObject(mp))                     {                         object[] parameters = new object[1] { type };                         mo.InvokeMethod("ChangeStartMode", parameters);                                            }                 }             }             catch (ManagementException ex)             {                 Console.WriteLine("An error occured while trying to searching the WMI method: " + ex.ToString());             }         }         static void Main(string[] args)         {             SetStartupType("gupdate", StartupType.Automatic);              Console.ReadKey();         }     } }
上面使用了ManagementPath类,或者你也可以这样:
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management; namespace ServicesStartup {     class Program     {        static void Main(string[] args)         {             try             {                 ManagementObject classInstance = new ManagementObject("root\\CIMV2",                     "Win32_Service.Name='gupdate'", null);                 // Obtain in-parameters for the method.                 ManagementBaseObject inParams = classInstance.GetMethodParameters("ChangeStartMode");                 // Add the input parameters.                 inParams["StartMode"] = "Automatic";                                // Execute the method and obtain the return values.                 ManagementBaseObject outParams = classInstance.InvokeMethod("ChangeStartMode", inParams, null);                 // List outParams                 Console.WriteLine("Out parameters:");                 Console.WriteLine("ReturnValue: " + outParams["ReturnValue"]);             }             catch (ManagementException err)             {                 Console.WriteLine("An error occured while trying to execute the WMI emthod: " + err.ToString());             }             Console.ReadKey();         }     } }
这段代码使用的是ManagementObject类,里面输出的ReturnValue是一个标志,如果值为0就是修改成功了。 这里需要注意的一点:C#必须以管理员的权限运行才能达到效果的,不然service的startmode修改是没有效果的。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部