加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在Windows服务安装程序中设置“与桌面交互”

发布时间:2020-12-15 08:20:44 所属栏目:百科 来源:网络整理
导读:我有一个 Windows服务,在系统帐户下运行,并不时执行一些程序(是的,是的,我知道这是一个不好的做法,但这不是我的决定).我需要设置“与桌面交互”检查,以便在安装服务后查看已执行程序的gui.我尝试了几种方法,将下面的代码放在我的服务安装程序的AfterInstall
我有一个 Windows服务,在系统帐户下运行,并不时执行一些程序(是的,是的,我知道这是一个不好的做法,但这不是我的决定).我需要设置“与桌面交互”检查,以便在安装服务后查看已执行程序的gui.我尝试了几种方法,将下面的代码放在我的服务安装程序的AfterInstall或OnCommited事件处理程序中:
ConnectionOptions coOptions = new ConnectionOptions();
coOptions.Impersonation = ImpersonationLevel.Impersonate;

ManagementScope mgmtScope = new System.Management.ManagementScope(@"rootCIMV2",coOptions);
mgmtScope.Connect();

ManagementObject wmiService = new ManagementObject("Win32_Service.Name='" + ServiceMonitorInstaller.ServiceName + "'");

ManagementBaSEObject InParam = wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"] = true;
ManagementBaSEObject OutParam = wmiService.InvokeMethod("Change",InParam,null);

要么

RegistryKey ckey = Registry.LocalMachine.OpenSubKey(
    @"SYSTEMCurrentControlSetServicesWindowsService1",true);

  if(ckey != null)
  {
    if(ckey.GetValue("Type") != null)
    {
      ckey.SetValue("Type",((int)ckey.GetValue("Type") | 256));
    }
  }

这两种方法都“有效”.他们设置了支票,但是在我启动服务之后启动了exe – 并且没有显示gui!所以,如果我停止服务,重新检查并再次启动它 – 宾果游戏!一切都开始并显示出来.实现结果的第二种方法是重新启动 – 之后还会显示gui.

所以问题是:是否有正确的方法来设置“与桌面交互”检查,所以它将开始工作而无需重新检查和重新启动?

操作系统:Windows XP(尚未试过Vista和7 ……)

解决方法

private static void SetInterActWithDeskTop()
        {
            var service = new System.Management.ManagementObject(
                    String.Format("WIN32_Service.Name='{0}'","YourServiceName"));
            try
            {
                var paramList = new object[11];
                paramList[5] = true;
                service.InvokeMethod("Change",paramList);
            }
            finally
            {
                service.Dispose();
            }


        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读