主程序不知道哪里问题,只能创建配置文件,后面的功能就完全不起作用了。求助高手们,主程序哪里有问题?
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());
} }
}
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());
} }
}
不知道是不是用这一段来指定,还是用其他的函数指定
服务一般是在System、Local service、Network service这三个账户中运行的,而不是administrator。