gpt4 book ai didi

c# - 以不同的用户静默方式通过 C# 代码运行 .bat 文件

转载 作者:行者123 更新时间:2023-11-30 17:19:44 26 4
gpt4 key购买 nike

我每隔几秒运行一个批处理文件,使用以下代码与服务器进行时间同步:

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 文件。

最佳答案

因为您传递的是用户名和密码,所以不考虑 CreateNoWindow 参数。这是 Windows 中的一个功能(即错误)。这是五年前的连接详细信息:

http://connect.microsoft.com/VisualStudio/feedback/details/98476/cmd-windows-shows-using-process-with-createnowindow-when-using-username-password-option

Process.Start() calls advapi32.dll's CreateProcessWithLogonW in the event that a user supplies a username and password, and CreateProcessWithLogonW always opens a new window. Unfortunately, there is no workaround for this behavior

这里给出了创建无窗口选项的一个很好的概述: http://blogs.msdn.com/b/jmstall/archive/2006/09/28/createnowindow.aspx它还指出了有关此主题的 msdn 文档中的错误。

在这个 stackoverflow 答案中有一个非常好的概述: How to hide cmd window while running a batch file?

最后,我想你想创建一个单独的小应用程序,你只调用一次,它一直运行,作为升级的用户。然后,它可以按照您上面描述的相同方式,按照您想要的频率执行时间同步,但无需指定用户名和密码。因此,在整个应用程序期间,控制台窗口只会“闪烁”一次。

希望对你有帮助磅

关于c# - 以不同的用户静默方式通过 C# 代码运行 .bat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com