想用C#做一个控制系统服务进程的小程序,求个思路。该如何解决

想用C#做一个控制系统服务进程的小程序,求个思路。。。。。
有两个服务每次用的时候都得手动启动。现在想做一个控制器。
1.开和关集成在一起,判断如果此服务没有启动那么启动,已经启动那么关闭
2.默认以管理员身份运行。

(最好是控制台应用程序,实现只双击运行程序就行,不需要图形化界面)

都要用到哪些知识点?请前辈们指点。。。谢谢。。。。。
------解决方案--------------------
用WMI吧。

读取你电脑信息,打开关闭某个进程,打开关闭服务,等等多的去了

具体可以参考http://blog.csdn.net/fer_ba/article/details/4280983(WMI使用的WIN32_类库名)

分享一段控制重启的代码和一段获取MAC的代码:


        /// <summary>
        /// 重启计算机
        /// </summary>
        public static void Restart()
        {
            try
            {
                ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
                //此句是开启特殊权限,不开启的话一些命令无法完成(e.g. 重启计算机 -_-!!!)
                mc.Scope.Options.EnablePrivileges = true;
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    mo.InvokeMethod("Reboot", null, null);
                }
            }
            catch (Exception)
            {
                Console.WriteLine("重启失败");
                throw;
            }


        }


        /// <summary>
        /// 获取Mac地址,通过Management类(WMI)
        /// </summary>
        /// <returns></returns>
        public static string GetMacForManagement()
        {
            try
            {
                //获取网卡硬件地址
                string mac = "";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        mac = mo["MacAddress"].ToString();
                        break;
                    }
                }
                moc = null;
                mc = null;
                return mac;
            }
            catch
            {
                return "null";
            }