我正在尝试使用远程处理和Windows服务启动应用程序(在本例中为记事本)。为了测试,我试图让记事本运行。虽然我似乎建立了连接(在任务管理器的进程下,记事本正在运行),但我没有看到窗口出现。我有一个客户端,用于通过键入文本框并单击按钮发送命令来运行,服务应该能够获取命令。我的代码分为3部分:
MyNewService:
namespace MyNewService
{
public partial class MyNewService : ServiceBase
{
bool serviceOn = false;
string command = String.Empty;
HttpChannel ch = new HttpChannel(4002);
public MyNewService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
ChannelServices.RegisterChannel(ch);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Service.Test), "ServiceURI", WellKnownObjectMode.Singleton);
}
}
}
服务:
namespace Service
{
public class Test:MarshalByRefObject
{
public Test()
{
}
public void runCommand(string command)
{
Process myProcess = new Process();
myProcess.StartInfo.FileName = command;
myProcess.Start();
}
}
}
客户端
namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Test t;
string command;
private void Form1_Load(object sender, EventArgs e)
{
System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(typeof(Test), "http://remoteComp:4002/ServiceURI");
t = new Test();
}
private void button3_Click(object sender, EventArgs e)
{
command = textBox1.Text;
t.runCommand(command);
}
}
}
我已经编写了一个控制台应用程序来代替Windows服务,以便测试窗口是否显示,窗口确实显示出来。但是使用Windows服务,该过程仅在后台运行。
知道发生了什么事吗?