我运行一个批处理文件,每隔几秒钟做时间同步与服务器使用下面的代码:运行.BAT通过C#代码为不同的用户文件默默
Process process = new Process();
process.StartInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System);
process.StartInfo.FileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "cmd.exe");
process.StartInfo.Arguments = @"/C C:\TimeSync.bat";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UserName = "username";
SecureString pwd = new SecureString();
Char[] pwdCharacters = "password".ToCharArray();
foreach (char t in pwdCharacters)
{
pwd.AppendChar(t);
}
process.StartInfo.Password = pwd;
process.Start();
string output = process.StandardOutput.ReadToEnd();
问题是,它在屏幕上闪动的命令窗口我不想要。我怎样才能防止呢?
我看到的一种行为是,如果我运行与UseShellExecute = true
相同的代码,并且不提供用户名和密码,那么命令窗口不会闪烁。
所以基本上我想用c#代码作为不同的用户静默运行.bat文件。
为什么不使用内置的ntp设置进行时间同步? – NotMe 2011-01-10 19:41:37
这是不同的故事。我可以证明这一点,但相信我必须这样做。让我们拿出时间片并思考其他事情,我们想要解决这个问题。 – user393014 2011-01-10 19:43:17
你可以使用`info.WindowStyle = ProcessWindowStyle.Hidden`,但我不确定这是否适用于控制台应用程序。 – 2011-01-10 19:48:43