rev*_*ice 9 c# windows-services
当我通过键入CMD手动向Windows添加服务时,如下所示:
"C:\ Program Files(x86)\ Windows Resource Kits\Tools\instsrv.exe""some-pl-char-ąźńćńół""C:\ Program Files(x86)\ Windows Resource Kits\Tools\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();
Run Code Online (Sandbox Code Playgroud)
然后创建的服务的名称是:some-pl-char-|轊˝-
为什么代码页有问题?ProcessStartInfo
有类似StandardInputEncoding的东西吗?
我在CMD中的活动代码页(使用chcp)是852.(波兰语)
参数属于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..
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3042 次 |
| 最近记录: |