Пример #1
0
        /// <summary>
        /// 获取服务状态
        /// </summary>
        /// <param name="serviceName">服务名</param>
        /// <returns>返回服务状态</returns>
        public static ServiceControllerStatus GetServiceStatus(string serviceName)
        {
            ServiceControllerStatus status = ServiceControllerStatus.ContinuePending;

            TryCatchBlock.TrycatchAndLog(() =>
            {
                var sc = new ServiceController(serviceName, MachineName);
                status = sc.Status;
            });

            return(status);
        }
Пример #2
0
        /// <summary>
        /// 启动服务
        /// </summary>
        /// <param name="serviceName">服务名</param>
        /// <returns>存在返回 true,否则返回 false;</returns>
        public static bool Run(string serviceName)
        {
            bool ret = false;

            TryCatchBlock.TrycatchAndLog(() =>
            {
                var sc = new ServiceController(serviceName, MachineName);
                if (sc.Status.Equals(ServiceControllerStatus.Stopped) || sc.Status.Equals(ServiceControllerStatus.StopPending))
                {
                    sc.Start();
                    ret = true;
                }
            });
            return(ret);
        }
Пример #3
0
        /// <summary>
        /// 获取服务安装路径
        /// </summary>
        /// <param name="serviceName"></param>
        /// <returns></returns>
        public static string GetWindowsServiceInstallPath(string serviceName)
        {
            string path = "";

            TryCatchBlock.TrycatchAndLog(() =>
            {
                string key = @"SYSTEM\CurrentControlSet\Services\" + serviceName;
                path       = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();

                path = path.Replace("\"", string.Empty);//替换掉双引号

                FileInfo fi = new FileInfo(path);
                path        = fi.Directory.ToString();
            });

            return(path);
        }
Пример #4
0
        /// <summary>
        /// 获取指定服务的版本号
        /// </summary>
        /// <param name="serviceName">服务名称</param>
        /// <returns></returns>
        public static string GetServiceVersion(string serviceName)
        {
            if (string.IsNullOrEmpty(serviceName))
            {
                return(string.Empty);
            }

            TryCatchBlock.TrycatchAndLog(() =>
            {
                string path               = GetWindowsServiceInstallPath(serviceName) + "\\" + serviceName + ".exe";
                Assembly assembly         = Assembly.LoadFile(path);
                AssemblyName assemblyName = assembly.GetName();
                Version version           = assemblyName.Version;
                return(version.ToString());
            });

            return(string.Empty);
        }