c#执行cmd命令创建服务
来源:互联网 发布:js中sleep怎么使用 编辑:程序博客网 时间:2024/06/14 14:27
相关参考:
http://www.cnblogs.com/maanshancss/p/6888168.html
http://blog.csdn.net/joyhen/article/details/41125259
上码:
using System;using System.Diagnostics;namespace App{ public class CmdHandle { public static string excuteCmd(string cmd) { Process proc = new Process(); proc.StartInfo.FileName = "cmd.exe"; proc.StartInfo.UseShellExecute = false; proc.StartInfo.RedirectStandardInput = false; proc.StartInfo.RedirectStandardOutput = true; proc.StartInfo.RedirectStandardError = true; proc.StartInfo.CreateNoWindow = true; proc.StartInfo.Arguments = "/c " + cmd; proc.Start(); proc.WaitForExit(); string ret = proc.StandardOutput.ReadToEnd() + proc.StandardError.ReadToEnd(); Console.WriteLine(ret); return ret; } /// <summary> /// 执行cmd.exe命令 /// </summary> public static string ExeCommand(string commandText) { return ExeCommand(new string[] { commandText }); } /// <summary> ///执行多条cmd.exe命令 /// </summary> public static string ExeCommand(string[] commandTexts) { Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; string strOutput = null; try { p.Start(); foreach (string item in commandTexts) { p.StandardInput.WriteLine(item); } p.StandardInput.WriteLine("exit"); strOutput = p.StandardOutput.ReadToEnd(); //strOutput = Encoding.UTF8.GetString(Encoding.Default.GetBytes(strOutput)); p.WaitForExit(); p.Close(); } catch (Exception e) { strOutput = e.Message; } return strOutput; } /// <summary> /// 启动外部Windows应用程序,隐藏程序界面 /// </summary> public static bool StartApp(string appName) { return StartApp(appName, ProcessWindowStyle.Hidden); } /// <summary> /// 启动外部应用程序 /// </summary> public static bool StartApp(string appName, ProcessWindowStyle style) { return StartApp(appName, null, style); } /// <summary> /// 启动外部应用程序,隐藏程序界面 /// </summary> public static bool StartApp(string appName, string arguments) { return StartApp(appName, arguments, ProcessWindowStyle.Hidden); } /// <summary> /// 启动外部应用程序 /// </summary> public static bool StartApp(string appName, string arguments, ProcessWindowStyle style) { bool blnRst = false; Process p = new Process(); p.StartInfo.FileName = appName;//exe,bat and so on p.StartInfo.WindowStyle = style; p.StartInfo.Arguments = arguments; try { p.Start(); p.WaitForExit(); p.Close(); blnRst = true; } catch { } return blnRst; } }}demo:
using System;using System.ServiceProcess;namespace App{ class Program { static void Main(string[] args) { string serverName = "MemcachedServer12230"; //UnloadServer(serverName); //卸载服务 CreateServer(serverName);//创建服务 //System.Threading.Tasks.Task.Run(() => //{ // CmdHandle.StartApp(@"F:\ff\bin\Debug\ff.exe", System.Diagnostics.ProcessWindowStyle.Normal); //}); Console.ReadLine(); } /// <summary> /// 创建服务 /// </summary> private static void CreateServer(string serverName) { //创建服务 string createService = "sc create " + serverName + " binPath= \"F:\\memcached.exe - d runservice - m 500 - p 12230\" start= auto DisplayName= \"Memcached Server (12230)\""; string descriptionS = "sc description " + serverName + " \"缓存服务:端口12230\""; string serverPath = "sc config TrustedInstaller binpath= \"%SystemRoot%\\servicing\\TrustedInstaller.exe\""; string starService = "net start " + serverName; //string msg = CmdHandle.excuteCmd(createService); //Console.WriteLine("[CreateServer]: '{0}' ok--->{1}", serverName, msg); CmdHandle.ExeCommand(new string[] { createService, descriptionS, starService }); Console.WriteLine("[CreateServer]: '{0}' ok", serverName); } /// <summary> /// 卸载服务 /// </summary> private static void UnloadServer(string serverName) { System.Text.StringBuilder strb = new System.Text.StringBuilder(); if (IsServiceExisted(serverName)) { strb.AppendLine(string.Format("net stop {0}", serverName)); //1.停止服务 strb.AppendLine(string.Format("sc delete {0}", serverName)); //2.删除服务 CmdHandle.ExeCommand(strb.ToString()); Console.WriteLine("[UnloadServer]: ok"); } else { Console.WriteLine("[UnloadServer]: Server '{0}' not exist", serverName); } } /// <summary> /// 服务是否存在 /// </summary> public static bool IsServiceExisted(string serviceName) { ServiceController[] services = ServiceController.GetServices(); foreach (ServiceController s in services) { if (s.ServiceName == serviceName) { return true; } } return false; } public static void ServiceStart(string serviceName) { ServiceController[] services = ServiceController.GetServices(); foreach (ServiceController s in services) { if (s.ServiceName == serviceName) { s.Start(); } } } /// <summary> /// 获取服务状态 /// </summary> public static ServiceControllerStatus GetServiceStatus(string serviceName) { ServiceController service = new ServiceController(serviceName); return service.Status; } //... }}
创建的服务在启动的时候有问题,会提示“服务没有及时响应启动或控制请求 1053”,可以在网上早到应对方案
阅读全文
0 0
- c#执行cmd命令创建服务
- C# 执行CMD命令
- C# 执行CMD命令
- C#执行CMD命令
- c# 执行CMD命令
- c#执行cmd命令
- C# 调用执行CMD命令
- c# 调用CMD命令执行dos命令
- C#执行DOS命令(CMD命令)
- C#执行DOS命令(CMD命令)
- C#执行DOS命令(CMD命令)
- C#执行CMD命令并返回结果
- c#执行windows的cmd命令操作
- c#中调用cmd命令执行批处理文件
- c#中调用cmd命令执行批处理文件
- C#调用CMD对话框并执行命令
- C#调用cmd执行ftp命令
- C#程序中调用cmd执行命令
- 顺序表集合的交并差操作
- MATLAB中filter函数的C代码实现
- hbase 开启缓冲和不开启缓冲 比较
- C# Console.WriteLine()函数中{}输出格式详解
- mybatis分页查询之sql server--mysql
- c#执行cmd命令创建服务
- 怎麽去掉Xcode工程中的某種類型的警告
- Android 源码解析-LruCache 缓存工具类
- 【AGC014E】Blue and Red Tree 并查集 启发式合并
- Nginx(5)---使用nginx作为负载均衡器
- 微信公众号开发后台基本搭建(基于NodeJs的express框架)
- idea基本使用
- http你不得不知道的那些事(八)--TCP三次握手
- Microsoft Visual Studio 调试监控器(MSVSMON.EXE)未能启动