我正在写一个windows服务,偶尔需要更新系统的IP地址,它会调用ipconfig/renew来完成它。代码看起来像这样
Process ipconfigProcess = new Process();
ipconfigProcess.StartInfo.FileName = "ipconfig";
ipconfigProcess.StartInfo.Arguments = " /renew";
ipconfigProcess.StartInfo.UseShellExecute = false;
ipconfigProcess.StartInfo.RedirectStandardOutput = true;
ipconfigProcess.Start();
strOutput = compiler.StandardOutput.ReadToEnd();
ipconfigProcess.WaitForExit();
我想一个windows服务是不允许显示窗口/对话框的。所以我的问题是更新ip是否会在windows服务中出现问题,因为它可能会或可能不会显示控制台来运行ipconfig ?
我认为你要面对的唯一问题是权限-你应该没有问题运行这样一个进程(只要你不想与任何类型的UI交互),但你的windows服务需要作为一个帐户运行,将能够产生一个进程和执行ipconfig
这并不需要cmd.exe的实例。许多命令行应用程序都以这种方式使用。
服务可以使用GUI函数和/或创建控制台。Windows创建一个虚拟的显示表面,以便在必要时绘制。(显然,这个虚拟表面不能与用户交互。)