gpt4 book ai didi

c# - 从 C# 问题执行命令

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:10 25 4
gpt4 key购买 nike

我制作了一个 C# 小工具来监控 sidebar.exe(有些人知道其中存在奇怪的内存泄漏,因此该监控器会在达到限制时重新启动 sidebar.exe 进程...)。

在此之前,我有一个 .bat 文件执行此操作,我手动运行它,并且运行良好。现在,我从 C# 执行 cmd 命令,但行为不同:7 个小工具中只有 4 个在“启动 sidebar.exe”后再次出现。它总是发生在程序中,而不会在手动运行时发生。

以 .bat 或从进程运行命令有什么区别?我可以解决这个问题吗?

我还尝试从进程中运行 .bat 本身,同样的问题...

命令是:

taskkill/im sidebar.exe/f

TIMEOUT/T 2 in .bat 或 System.Threading.Thread.Sleep(2000); in program

启动sidebar.exe

更新:我试过的代码:
选项 1 - 运行 .bat:System.Diagnostics.Process.Start(@"C:\....restart.bat");
选项 2 - 运行命令:
...
this.executeCmd("taskkill/im sidebar.exe/f");
System.Threading.Thread.Sleep(2000);
this.executeCmd("启动sidebar.exe");
...

private void executeCmd(String command)
{
ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = psi;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
System.Console.Out.WriteLine(result);
}

更新:
我被告知这是一些权限/帐户/用户问题,试图解决它但没有成功,但我注意到在 Java 中这不会发生所以我将 Java 和 C# 结合用于这个工具(一个在启动时调用的 java runnable,使用返回 sidebar.exe 用法的小 exe)- 完美。如果有人知道这个 C# 问题,仍然会很感激。

最佳答案

我认为您的问题出在您所处的环境中。更多信息很有帮助,但这里有一些值得尝试的地方。

使用 System.Diagnostics 命名空间,创建 ProcessStartInfo 对象并提供适当的信息,尤其要确保提供登录用户的用户名。

使用此 ProcessStartInfo 对象作为 Process.Start(ProcessStartInfo) 调用的参数。

这应该在正确的用户帐户下启动该过程。

现在,如果您将此作为服务运行,您可能会遇到其他问题,因为服务在设计上无法访问 GUI 服务不允许用户输入,因此环境也可能受到限制,并且侧边栏可能无法找到其保存的设置。

知道我应该在点击提交之前点击刷新 :)

关于c# - 从 C# 问题执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914822/

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