在windowService用Process.Start()启动程序没有界面-记录
1.在服务程序安装时编程实现,ProjectInstaller.cs
using
System;
using
System.Collections;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Configuration.Install;
//using System.Linq;
using
Microsoft.Win32;
//对注册表操作一定要引用这个命名空间
namespace
MonitorService
{
[RunInstaller(
true
)]
public
partial
class
ProjectInstaller : Installer
{
public
ProjectInstaller()
{
InitializeComponent();
//this.Context.Parameters["ServerCode"].ToString(); // 读取安装时输入的服务器编号
}
private
void
ProjectInstaller_AfterInstall(
object
sender, InstallEventArgs e)
{
//设置允许服务与桌面交互
SetServiceTable(
"MonitorService"
);
}
/// <summary>
/// 设置允许服务与桌面交互 ,修改了注册表,要重启系统才能生效
/// </summary>
/// <param name="ServiceName">服务程序名称</param>
private
void
SetServiceTable(
string
ServiceName)
{
RegistryKey rk = Registry.LocalMachine;
string
key =
@"SYSTEM\CurrentControlSet\Services\"
+ ServiceName;
RegistryKey sub = rk.OpenSubKey(key,
true
);
int
value = (
int
)sub.GetValue(
"Type"
);
sub.SetValue(
"Type"
, value | 256);
}
}
}
2.注册表修改
onstart的时候修改注册表
[HKEY_LOCAL_MACHINE
"SYSTEM"
CurrentControlSet
"Services"
你的服务名]
"Type"
=dword:00000010
key value+256
比如现在00000010是16+256=272
16精制就是00000110
3.SC程序修改, 允许与桌面进行交互
在dos命令提示符下输入:
sc config MonitorService type= interact type= own
回车即可。
可以用批处理的方式实现,把下面代码保存为 myservice.bat 即可:
rem 配置服务程序为允许与桌面进行交互方式
@echo
"准备停止服务程序..."
sc stop MyService
@echo
"设置允许与桌面进行交互方式允许"
sc config MyService type= interact type= own
@echo
"正在重新启动服务..."
sc start MyService
@echo
"启动服务成功!"
取消“允许与桌面进行交互”
DOS命令提示符下运行下面语句即可:
sc config MyService type= own
经测试:1,2 可以选中“允许与桌面进行交互”,但启动服务的时候,不能弹出应用程序的界面。
3 可以完美实现所有要求。
在服务的属性的登录选项卡中,把允许服务与桌面交互勾选上,再试试。
在windowService用Process.Start()启动程序没有界面-记录的更多相关文章
- linux下普通用户如何使用80端口启动程序
linux下普通用户如何使用80端口启动程序 http://blog.csdn.net/shootyou/article/details/6750230 大家都知道默认情况下linux的1024以下端 ...
- Linux开机启动程序详解
Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...
- Linux开机启动程序详解[转]
Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...
- linux系统设置服务开机启动3种方法,Linux开机启动程序详解
linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明 ...
- Linux如何实现开机启动程序详解
我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. 加载内核LILO 启动之 ...
- # C#不登录电脑启动程序
我们知道开机自启动程序如果在用户不登录的情况下是不启动的,但是服务类程序是可以跨过用户登录启动的,例如IIS服务,SQL服务.如果我们已经写好了桌面应用程序,又希望他开机自启动,那就需要借助系统服务在 ...
- Linux如何实现开机启动程序详解(转)
Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...
- Android process 的启动流程
Android process 的启动流程 1.android启动时所运行的进程: USER PID PPID VSIZE RSS WCHAN PC ...
- 阿里云下 centos7下启动程序总是被killed ,看内存占用情况以检查哪些服务存在问题并调整参数作调优
很久不搭理自己的网站了,几天突然发现启动程序总是被killed, 于是查看了系统日志 vi /var/log/messages 发现出现 kernel: Out of memory: Kill pro ...
随机推荐
- 【转】理解Java Integer的缓存策略
本文将介绍 Java 中 Integer 缓存的相关知识.这是 Java 5 中引入的一个有助于节省内存.提高性能的特性.首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为 ...
- 对iOS后台模式最多10分钟运行时间的进一步理解
在app进入后台时,系统初始默认是只有10s的处理时间,但如果10s不够,我们可以主动申请,网上流传最多的一个说法是10分钟. 但这种说法有个前提: 那就是iOS7之前,是这样 但从iOS7开始,我们 ...
- Python字符串str的方法使用
#!usr/bin/env python# -*-coding:utf-8-*-#字符串通常用双引号或单引号来表示:'123',"abc","字符串"#str字 ...
- VS2015 + OpenCV 2.4.X 配置环境
VS2015的内部编号是VC14,但现在opencv 2.4.X和最新的3.0版本只有vc12的库文件,所以这里主要简单讲如何针对vs2015配置环境. 首先按照下面的文章把环境配置好: [OpenC ...
- Virtualbox虚机无法启动因断电
The virtual machine 'nn1' has terminated unexpectedly during startup with exit code 1 (0x1). More ...
- BI建模原则和常见问题
BI建模的质量直接影响数据仓库项目的质量,所以在建模前,要对数据仓库的架构组成.大小以及模型功能有明确的定义. 影响BI数据仓库建模的因素众多,往往会随着项目的具体情况不同而变化.但有些原则是相通的, ...
- Windows 10 装机回忆录
Frank.Han 标记: Windows,快捷键,安装 2015年10月我便更新了Win10系统,一直用着很顺手,比起Win8.x,他更像Win7的嫡系版本. 屏蔽掉系统自带的平板服务(小娜.地理位 ...
- UML九种图作用简介
UML(统一建模语言):是面向对象的可视化建模语言. UML中有3种构造块:事物.关系和图,事物是对模型中最具有代表性的成分的抽象,关系是把事物结合在一起,图聚集了相关的事物 UML中有九种图如下: ...
- [转]Mac下配置基于SecurID的Cisco IPSec VPN全攻略(有图)
来自: http://www.eefocus.com/Kevin/blog/11-09/230878_53c71.html RSA的SecurID长的是这个样子滴: Mac里面,可以设置VPN, 方法 ...
- win2008无密码共享
http://jingyan.baidu.com/album/76a7e409dc4b5cfc3a6e1566.html?picindex=15