可靠地从Windows上的系统命令获取非本地化输出

时间:2016-10-20 14:48:07

标签: windows command-line localization iis-express spawn

iisexpresstray是IIS Express附带的帮助应用程序,显示有关运行此服务器实例的信息。我想学习它是如何工作的,所以我用ILSpy反编译了这个.NET程序。特别是,我注意到一段运行系统命令的代码,即netsh http show servicestate view=requestq

string text;
using (Process process = new Process()) {
    process.StartInfo.FileName = "netsh";
    process.StartInfo.Arguments = "http show servicestate view=requestq";
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.Start();
    text = process.StandardOutput.ReadToEnd();
    process.WaitForExit();
}

到目前为止没什么特别的,但是这段代码解析了这个命令的输出,期望找到像"Process IDs:""Registered URLs:"这样的英语子串,只有当命令的输出不是&#时39; t本地化。即使在本地化的Windows上,这也会有所作为。此外,iisexpresstray依赖于此行为。

那么这是如何工作的?当我简单地将这个代码段复制到在本地化Windows上运行的LINQPad时,我预计会看到本地化结果。设置Thread.CurrentThread.CurrentCulture不会改变任何内容。

0 个答案:

没有答案