本帖最后由 u011235865 于 2013-06-28 13:21:25 编辑

解决方案 »

  1.   

    1.在服务程序安装时编程实现,ProjectInstaller.csusing 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 可以完美实现所有要求。
      

  2.   

    lz你不是在 server2008 上运行吧