解决方案 »
- (急切求助)CE环境下如何把Table中数据写文本文件(在线等)
- C# 比较字符串 两个不同的字符串 不同的部分取出来
- c#模拟登录phpwind论坛带验证码的问题
- 大家帮我看看这是怎么回事?
- Sql数据插入access的大发现!不知道有人发现了没有?。。。。
- 我以前用delphi时,用devpress的主从表控件master/detail,现在用C#想实现主从效果,有没有好用的空件?
- 求电子图书《windows核心编程》等
- 如何让百度地图API中的InfoWindow显示内容为已经做好的html网页
- 心情极其低落-散分
- 如何用c#在应用程序中收发邮件??(在线等待)
- WPF中调用C++COM组件中的函数导致页面卡怎么办???
- 关于数据库插入数据不重复的问题
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 可以完美实现所有要求。