主程序不知道哪里问题,只能创建配置文件,后面的功能就完全不起作用了。求助高手们,主程序哪里有问题?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.IO;
using api_class;
using System.Security.Principal;namespace SysLock
{
    /*
     *程序用于在指定用户登录界面,开机自动启动一个进程,并且隐藏整个桌面。
     * 
     */
    public partial class SysLock : ServiceBase
    {
        public SysLock()
        {
            InitializeComponent();
        }
        private string _processName="";
        private string _filename = @"c:\system.conf";
        private string _username = "";        public string ProcessName { get { return _processName; } set { _processName = value; } }
        public string FileName { get { return _filename; } set { _filename = value; } }
        public string UserName { get { return _username; } set { _username = value; } }        protected override void OnStart(string[] args)
        {            FileInfo fi = new FileInfo(FileName);
            string[] config = new string[2];            /*
             *创建配置文件 
             */
            if (!fi.Exists)
            {
                using (StreamWriter sw = fi.CreateText())
                {
                    sw.WriteLine("{0}:{1}", UserName, ProcessName);
                }
            }            /*
             *读取配置文件 
             */
            using (StreamReader sr = new StreamReader(FileName))
            {
                String line;
                while ((line = sr.ReadLine()) != null)
                {
                    config = line.Split(':');
                }            }
            SysLock sl = new SysLock();
            sl.UserName = config[0];
            sl.FileName = config[1];            /*
             *在指定用户登录界面启动指定进程 
             */
           if(isUser(sl.UserName))
           {
               api_class.api_class.hideDesktop();//隐藏桌面
               api_class.processControl pc = new processControl();
               pc.startProcess(sl.ProcessName);//启动进程
                          }
        }        protected override void OnStop()
        {        }        private bool isUser(string username)
        {
            return WindowsIdentity.GetCurrent().Name.ToString().ToLower().Equals(username.ToString().ToLower());
        }    }
}

解决方案 »

  1.   

    onstart中应该启动出一个用来长期执行的工作线程,否则服务运行完onstart的代码就结束了。
      

  2.   

    if (WindowsIdentity.GetCurrent().Name.ToString().ToLower().Trim().Equals("administrator"))先解决这个问题这段代码是指定在administrator下才执行一个动作,但是它没效果
    不知道是不是用这一段来指定,还是用其他的函数指定
      

  3.   


    服务一般是在System、Local service、Network service这三个账户中运行的,而不是administrator。