资源简介
在c#创建的开机自启动服务里,调用外部可执行文件有以下问题:
1、带窗口的交互式的exe文件调用后,实际并没有被执行;
2、服务是随windows启动的,服务启动后可能windows桌面还没出来,会报错误,导致程序无法执行;
3、安装服务需管理员权限
等问题。
本例针对上面的一些问题进行解决:
1、调用带窗口的交互式的exe文件,参见Interop.cs文件,
在服务调用问文件WindowsService.cs里面这样引用
Interop.CreateProcess(@"d:\getp.exe", @"C:\Windows\System32\"); //执行
这里的exe可以是任意的。
2、在服务里建了个线程,延时执行exe文件,避免了第2个问题,同时循环执行,很多软件的服务不断弹出新闻广告就这这样子。
3、管理员权限问题:
在项目上点右键选“属性”,选择“安全性”,勾选复选框“启用ClickOnce”
在Properties里面就会出现“app.manifest”文件,对其进行修改
改成
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
本例安装进程名为“我的数据服务”,每隔200秒执行getp.exe文件。
运行时可选择“1”进行安装,“3”进行卸载,安装完毕后在服务里可以看到“我的数据服务”项目。
1、带窗口的交互式的exe文件调用后,实际并没有被执行;
2、服务是随windows启动的,服务启动后可能windows桌面还没出来,会报错误,导致程序无法执行;
3、安装服务需管理员权限
等问题。
本例针对上面的一些问题进行解决:
1、调用带窗口的交互式的exe文件,参见Interop.cs文件,
在服务调用问文件WindowsService.cs里面这样引用
Interop.CreateProcess(@"d:\getp.exe", @"C:\Windows\System32\"); //执行
这里的exe可以是任意的。
2、在服务里建了个线程,延时执行exe文件,避免了第2个问题,同时循环执行,很多软件的服务不断弹出新闻广告就这这样子。
3、管理员权限问题:
在项目上点右键选“属性”,选择“安全性”,勾选复选框“启用ClickOnce”
在Properties里面就会出现“app.manifest”文件,对其进行修改
改成
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
这样就可以管理员权限安装了。
编译执行后:
本例安装进程名为“我的数据服务”,每隔200秒执行getp.exe文件。
运行时可选择“1”进行安装,“3”进行卸载,安装完毕后在服务里可以看到“我的数据服务”项目。
上一篇http://www.haolizi.net/example/view_10836.html
服务只是一般的建立服务,调用外部exe是不可用的。这里做个专门例子进行说明。
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleWithWindowsService
{
class Interop
{
public static void CreateProcess(string app string path)
{
bool result;
IntPtr hToken = WindowsIdentity.GetCurrent().Token;
IntPtr hDupedToken = IntPtr.Zero;
PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
SECURITY_ATTRIBUTES sa = new SECURITY_ATTRIBUTES();
sa.Length = Marshal.SizeOf(sa);
STARTUPINFO si = new STARTUPINFO();
si.cb = Marshal.SizeOf(si);
int dwSessionID = WTSGetActiveConsoleSe
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 49152 2017-03-16 12:53 创建服务\.vs\ConsoleWithWindowsService\v14\.suo
文件 189 2016-09-07 09:27 创建服务\ConsoleWithWindowsService\App.config
文件 14848 2017-03-16 12:20 创建服务\ConsoleWithWindowsService\bin\Debug\ConsoleWithWindowsService.exe
文件 189 2016-09-07 09:27 创建服务\ConsoleWithWindowsService\bin\Debug\ConsoleWithWindowsService.exe.config
文件 26112 2017-03-16 12:20 创建服务\ConsoleWithWindowsService\bin\Debug\ConsoleWithWindowsService.pdb
文件 22696 2017-03-16 12:15 创建服务\ConsoleWithWindowsService\bin\Debug\ConsoleWithWindowsService.vshost.exe
文件 189 2016-09-07 09:27 创建服务\ConsoleWithWindowsService\bin\Debug\ConsoleWithWindowsService.vshost.exe.config
文件 3301 2017-03-14 20:09 创建服务\ConsoleWithWindowsService\bin\Debug\ConsoleWithWindowsService.vshost.exe.manifest
文件 3500 2017-03-16 10:13 创建服务\ConsoleWithWindowsService\ConsoleWithWindowsService.csproj
文件 6863 2017-03-16 09:12 创建服务\ConsoleWithWindowsService\Interop.cs
文件 4138 2017-03-16 10:44 创建服务\ConsoleWithWindowsService\Program.cs
文件 3301 2017-03-16 12:48 创建服务\ConsoleWithWindowsService\Properties\app.manifest
文件 1358 2016-09-07 09:27 创建服务\ConsoleWithWindowsService\Properties\AssemblyInfo.cs
文件 3779 2017-03-16 10:14 创建服务\ConsoleWithWindowsService\ServiceHelper.cs
文件 2000 2017-03-16 12:19 创建服务\ConsoleWithWindowsService\WindowsService.cs
文件 1118 2016-09-07 09:29 创建服务\ConsoleWithWindowsService\WindowsService.Designer.cs
文件 1042 2016-09-07 09:28 创建服务\ConsoleWithWindowsService.sln
目录 0 2017-03-16 10:07 创建服务\.vs\ConsoleWithWindowsService\v14
目录 0 2017-03-16 12:20 创建服务\ConsoleWithWindowsService\bin\Debug
目录 0 2016-09-07 10:36 创建服务\ConsoleWithWindowsService\bin\Release
目录 0 2017-03-16 12:56 创建服务\ConsoleWithWindowsService\obj\Debug
目录 0 2017-03-16 10:07 创建服务\.vs\ConsoleWithWindowsService
目录 0 2017-03-16 10:06 创建服务\ConsoleWithWindowsService\bin
目录 0 2017-03-16 10:06 创建服务\ConsoleWithWindowsService\obj
目录 0 2017-03-16 12:48 创建服务\ConsoleWithWindowsService\Properties
...D.H. 0 2017-03-16 10:07 创建服务\.vs
目录 0 2017-03-16 12:19 创建服务\ConsoleWithWindowsService
目录 0 2017-03-16 10:07 创建服务
----------- --------- ---------- ----- ----
143775 28
............此处省略1个文件信息
- 上一篇:串口测试和发送数据(波特率)
- 下一篇:C# 程序捆绑释放运行
相关资源
- Hosts文件管理工具
- C#联通网络宽带测试 拨号
- C#百度指数抓取方法(2012年版本已失
- C# 隐藏某个磁盘分区
- C# 读取并编辑window系统的右键菜单
- C#自定义屏保(不断滚动的文字)
- C#winform打印指定区域 -控件拖动 -设置
- C#使用Hook进行改键
- 提供C#调用系统API函数弹出或收起光驱
- 通过C#自带的头文件(类)获取Windo
- C#获取电脑CPU以及内存使用率
- 利用uu云打码平台的lib实现的c#打码平
- tf-idf一种计算方法
- C# pop3 邮件接收程序
- C# 邮件群发示例 源码下载18952
- 动态抓取IPC#实现
- XXTEA算法的C#实现和JS实现,可以互相
- C# 飞行棋 游戏源码(面向对象入门)
- 基于WinPcap的C# ARP欺骗软件().rar
- C#网络应用编程 矩阵并行计算练习
- 《C#版Ftp软件源码》
- 基于com串口的文件发送和接收
- ax播放器实现文件拖入播放和拖动到可
-
C# 播放铃声(AxWindowsMediaPla
yer)最新 - gif图片转换成jpg文件格式
- C# 把图片显示成椭圆形状
- C# 水平交错效果显示图像
- winform 浮雕效果的图像
- c# 底片效果显示图像就像旧式相机的
- 积木效果显示图像
评论
共有 条评论