gpt4 book ai didi

c# - ProcessStartInfo 的标准输入编码?

转载 作者:太空狗 更新时间:2023-10-29 17:49:53 25 4
gpt4 key购买 nike


当我通过在 CMD 中键入以下内容手动向 Windows 添加服务时:

“C:\Program Files (x86)\Windows Resource Kits\Tools\instsrv.exe”\srvany.exe"

...服务名称一切都很好,但是当我尝试在 C# 中执行此操作时:

ProcessStartInfo startInfo = new ProcessStartInfo();
Process myprocess = new Process();

startInfo.FileName = "cmd";
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;

myprocess.StartInfo = startInfo;
myprocess.Start();

StreamWriter sw = myprocess.StandardInput;
StreamReader sr = myprocess.StandardOutput;

Thread.Sleep(200);

string command = ...
^ "C:\Program Files (x86)\Windows Resource Kits\Tools\instsrv.exe" "some-pl-char-ąźńćńół" "C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe"

sw.WriteLine(command);
sw.WriteLine("exit");

Thread.Sleep(200);

sw.Close();
sr.Close();

则创建的服务名称为:some-pl-char-¦č˝Š˝ˇ-

为什么代码页有问题?
ProcessStartInfo 有类似StandardInputEncoding 的东西吗?
我在 CMD(使用 chcp)中的事件代码页是 852。(波兰语)

最佳答案

Arguments 属于分配给 Arguments 属性,反斜杠需要由另一个反斜杠转义。 \ -> \\

更新:

using (var process = new Process())
{
var encoding = Encoding.GetEncoding(852);

var psi = new ProcessStartInfo();
psi.FileName = "cmd";
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.StandardOutputEncoding = encoding;

process.StartInfo = psi;

process.Start();

using (var sr = process.StandardOutput)
using (var sw = new StreamWriter(process.StandardInput.BaseStream, encoding))
{
var command = "....";
sw.WriteLine(command);
// etc..
}
}

关于c# - ProcessStartInfo 的标准输入编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282954/

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