windows服务下启动外部程序

本文介绍了在Windows服务中启动外部程序遇到的问题,由于服务在Session 0中运行,直接使用Process.Start()方法在Vista和Win7上无法显示桌面程序。作者找到了Cjwdev.WindowsApi.dll这个第三方库,通过几行代码解决了这个问题。
摘要由CSDN通过智能技术生成

1、缘由

公司要想做一个windows服务在检测自家软件的运行是否正常,如果不正常的话,就重新启动它,所以涉及到了windows服务启动外部程序的一个过程,但是进过测试,无法简单的用process.start(),这样的方式,主要原因是在vista和win7这样的系统下,服务是运行在session 0,而基本上应用是运行在session 1,所以即便是process.start()能够将外部程序启动起来,桌面上也是看不到的, 何况启动不起来呢~~;

2、解决方法:

在网上找到了好久,发现了这样一个第三方库,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 = n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值