欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > windows >内容正文

windows

在windowService用Process.Start()启动程序没有界面-记录

发布时间:2025/6/15 windows 58 豆豆
生活随笔 收集整理的这篇文章主要介绍了 在windowService用Process.Start()启动程序没有界面-记录 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
原文:在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()启动程序没有界面-记录的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。