windows服务下无法启动外部程序

做一个windows服务监听服务,涉及到windows服务启动外部程序的一个过程,但是调试测试发现,无法简单的用process.start()这种方法,

原因是在vista和win7这样的系统下,服务是运行在session 0,而基本上应用是运行在session 1,所以windows服务下无法启动process.start()。

网上看到windows服务下无法启动外部程序的原因,解决方案

1、在WinXP和Win2003环境中,安装服务后,右键单击服务“属性”-“登录”选项卡-选择“本地系统帐户”并勾选“允许服务与桌面交互”即可.

2、在Win7环境中,由于微软加强了权限管理,将此功能禁用,需要引用第三方dll,即Cjwdev.WindowsApi.dll

Cjwdev.WindowsApi.xml,dll下载链接:http://pan.baidu.com/share/link?shareid=159544&uk=3288736938

解决方法:使用这样一个第三方库,Cjwdev.WindowsApi.dll,能够从服务启动外部程序;

public static void Openlocalexe(string path)
{

int _currentAquariusProcessID;
/*appStartpath设置为全路径地址*/
string appStartpath = path;
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);
try
{
ApiDefinitions.CreateProcessAsUser(userTokenHandle, appStartpath, "", IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref startinfo, out procinfo);
if (userTokenHandle != IntPtr.Zero)
ApiDefinitions.CloseHandle(userTokenHandle);

_currentAquariusProcessID = (int)procinfo.dwProcessId;
}
catch (Exception exc)
{
Program.Log.Error(exc.Message);
//System.Runtime.InteropServices.Interop.ShowMessageBox(exc.Message, "Comfirm");
}
}

注意:要在windows服务里面去调用启动外部程序,并且外部程序不能使控制台程序,建议是winform.exe这样方便测试。

Windows服务启动进程----Cjwdev.WindowsApi.dll的更多相关文章

  1. windows服务启动有界面的程序

    大家写windows服务守护进程的时候,肯定会遇到启动的程序看不到界面,只能在任务管理器里面看到xxx.exe问题. 发现可能有如下情况 a.无论是开机,还是程序被关掉后,守护服务启动的程序只能看到任 ...

  2. windows 服务启动外部程序

    服务使用Process启动外部程序没窗体 在WinXP和Win2003环境中,安装服务后,右键单击服务“属性”-“登录”选项卡-选择“本地系统帐户”并勾选“允许服务与桌面交互”即可. 在Win7及以后 ...

  3. C#穿透session隔离———Windows服务启动UI交互程序

    在Windows服务里面启动其他具有界面的应用程序,需要穿透session隔离,尝试了很多种方法,都可行,现在一一列举下来,并写下几个需要注意的地方. 需要注意的地方 首先要将服务的Account属性 ...

  4. windows服务启动 1053错误

    1.问题描述 今天在启动一个Windows服务时,服务启动不了,且提示:1053错误 那么是什么导致了1053错误呢? 2.他山之石 百度了一下,发现有人作出下面的解释并给出了解决方法: “常常是因为 ...

  5. powershell脚本之windows服务与进程

    powershell脚本之windows服务与进程 服务与进程的区别: Windows服务是指系统自动完成的,不需要和用户交互的过程,可长时间运行的可执行应用程序 进程是程序运行的实例,系统会给运行中 ...

  6. Redis Windows 服务启动异常 错误码1067

    https://blog.csdn.net/after_you/article/details/62215163 Redis Windows 服务启动异常 错误码1067 下载了Redis 2.8.2 ...

  7. MongoDB做为一项windows服务启动

    MongoDB做为一项windows服务启动 Windows版本安装 MongoDB的官方下载站是http://www.mongodb.org/downloads,可以去上面下载最新的对应版本,有32 ...

  8. 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

    将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...

  9. 玩转Windows服务系列——Windows服务启动超时时间

    最近有客户反映,机房出现断电情况,服务器的系统重新启动后,数据库服务自启动失败.第一次遇到这种情况,为了查看是不是断电情况导致数据库文件损坏,从客户的服务器拿到数据库的日志,进行分析. 数据库工作机制 ...

随机推荐

  1. webxml样板

    <!--<!DOCTYPE web-app PUBLIC--> <!--"-//Sun Microsystems, Inc.//DTD Web Application ...

  2. 【bzoj 4764】弹飞大爷

    Description 自从WC退役以来,大爷是越来越懒惰了.为了帮助他活动筋骨,也是受到了弹飞绵羊一题的启发,机房的小伙伴们决定齐心合力构造一个下面这样的序列.这个序列共有N项,每项都代表了一个小伙 ...

  3. volatile的使用场景

    单词解释: 乱序执行:指CPU对代码的执行顺序进行乱序优化,但保证各执行代码单元的顺序按指令顺序排列.以达到充分利用处理器的各处理单元的目的.(可以理解成:一个任务有不同的执行单元,这些单元之间有一定 ...

  4. WordPress分类列表函数:wp_list_categories用法及参数详解举例

    http://www.511yj.com/wordpress-wp-categories.html 注意: 1. wp_list_categories() 和 list_cats() 以及 wp_li ...

  5. 堆(heap)与栈(stack)

    编程语言书籍中经常解释: 值类型被创建在栈上,引用类型被创建在堆上.   构造函数,原型之类的算是引用类型吗? 5种基本数据类型有Undefined.Null.Boolean.Number 和 Str ...

  6. 小程序开发-Step1

    先申请一个小程序 https://mp.weixin.qq.com/wxopen/waregister?action=step1 根据以上链接步骤一步一步来,认识字就可以完成,没什么特殊的 申请成功之 ...

  7. 【blog】好用的markdown插件 - Mditor

    效果 官网地址 GitHub: https://github.com/houfeng/mditor 主页: http://houfeng.net/mditor/

  8. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  9. Eclipse 各版本号

    查看Eclipse版本号的方法:1.找到eclipse安装目录.2.进入readme文件夹,打开readme_eclipse.html.3.readme_eclipse.html呈现的第二行即数字版本 ...

  10. Windows中Anaconda,Tensorflow 和 Pycharm的安装和配置

    Anaconda完全入门指南 https://www.jianshu.com/p/eaee1fadc1e9                 [安装不要按此条链接进行] Windows中 Anacond ...