c# windows服务中启动进程
来源:互联网 发布:送男朋友什么礼物知乎 编辑:程序博客网 时间:2024/06/14 18:35
现在需要在一个windows服务中判断程序是否运行,如果不在运行,就要重启这个进程,
和StartAppUtil的方法:
传入进程的执行文件filePath 就可以启动这个进程了。
尝试了Process的方法:
Process pro = new Process(); string batPath = "D:\\run.bat"; FileInfo file = new FileInfo(batPath); pro.StartInfo.WorkingDirectory = file.Directory.FullName; pro.StartInfo.FileName = batPath; pro.StartInfo.CreateNoWindow = false; pro.Start();
和StartAppUtil的方法:
StartAppUtil.StartApplication(@"D:\test.ext");
发现都有问题。
在网上找到了一个 Cjwdev.WindowsApi 的方法很好用,
首先下载 Cjwdev.WindowsApi.dll ,引入到项目中,
try { string appStartPath = filePath; IntPtr userTokenHandle = IntPtr.Zero; ApiDefinitions.WTSQueryUserToken(ApiDefinitions.WTSGetActiveConsoleSessionId(), ref userTokenHandle); ApiDefinitions.PROCESS_INFORMATION procInfo = new ApiDefinitions.PROCESS_INFORMATION(); ApiDefinitions.STARTUPINFO startInfo = new ApiDefinitions.STARTUPINFO(); startInfo.cb = (uint)Marshal.SizeOf(startInfo); ApiDefinitions.CreateProcessAsUser( userTokenHandle, appStartPath, "", IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref startInfo, out procInfo); if (userTokenHandle != IntPtr.Zero) ApiDefinitions.CloseHandle(userTokenHandle); int _currentAquariusProcessId = (int)procInfo.dwProcessId; } catch (Exception ex) { }
传入进程的执行文件filePath 就可以启动这个进程了。
0 0
- c# windows服务中启动进程
- C#启动停止windows服务
- C#启动windows服务浅析
- C#启动,停止Windows服务
- 通过C#启动windows服务
- Windows服务启动用户级进程
- C#获取系统服务+进程+启动时间
- Win7中如何在远程服务器的windows服务中启动一个软件进程
- 关于C#开发 windows服务进程
- 关于C#开发 windows服务进程
- c# 通过Windows服务启动外部程序
- C# Windows 服务开发并启动
- C#启动windows服务报错
- c#通过创建Windows服务启动程序
- C# 判断某个Windows服务是否启动
- c# 通过Windows服务启动外部程序
- C#启动windows服务的方法浅析
- c# windows服务 一个进程 多个服务的使用
- Activity里面的UI模板自定义属性,更好的复用TextView,由于在网上没找到类似,记录下来。
- UITableView
- HDU 1875 畅通工程再续
- hdoj 1272 小希的迷宫
- 后缀树
- c# windows服务中启动进程
- MII(2)
- Android多线程问题—— AsyncTask机制
- Mysql不得不用储存过程代替触发器
- 黑马程序员——类与对象
- 话务预测(2) 数据
- 创业:中国农批市场的那些事儿
- 51NOD1024 矩阵中不重复的元素
- HDU 1242 Rescue