gpt4 book ai didi

c# - 如何使用 C# 以编程方式检查 jre 环境是 32 位还是 64 位?

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:36 24 4
gpt4 key购买 nike

我有一个 jre 文件夹,基本上是 java 运行时,它没有安装,我从其他地方复制了这个文件夹,现在我需要手动检查这个 jre 是 32 位还是 64 位,而不需要编写任何代码,如果必须编写代码,那么它应该是 c#。所有示例都告诉 system.getproperty("java...model") 用于获取已安装 jre 的目标类型的信息,但我没有安装此 jre,而是刚刚复制了此 jre。那么有什么方法可以知道它的目标类型是 32 位还是 64 位。

最佳答案

C# 代码

// *** Main code
string output = RunExternalExe("java.exe -version");

// Parse output here...


// *** Helper methods
public string RunExternalExe(string filename, string arguments = null)
{
var process = new Process();

process.StartInfo.FileName = filename;
if (!string.IsNullOrEmpty(arguments))
{
process.StartInfo.Arguments = arguments;
}

process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.UseShellExecute = false;

process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;
var stdOutput = new StringBuilder();
process.OutputDataReceived += (sender, args) => stdOutput.Append(args.Data);

string stdError = null;
try
{
process.Start();
process.BeginOutputReadLine();
stdError = process.StandardError.ReadToEnd();
process.WaitForExit();
}
catch (Exception e)
{
throw new Exception("OS error while executing " + Format(filename, arguments)+ ": " + e.Message, e);
}

if (process.ExitCode == 0)
{
return stdOutput.ToString();
}
else
{
var message = new StringBuilder();

if (!string.IsNullOrEmpty(stdError))
{
message.AppendLine(stdError);
}

if (stdOutput.Length != 0)
{
message.AppendLine("Std output:");
message.AppendLine(stdOutput.ToString());
}

throw new Exception(Format(filename, arguments) + " finished with exit code = " + process.ExitCode + ": " + message);
}
}

private string Format(string filename, string arguments)
{
return "'" + filename +
((string.IsNullOrEmpty(arguments)) ? string.Empty : " " + arguments) +
"'";
}


命令示例输出
我的盒子上有 64 位 java 版本。这是它的输出:

C:\Program Files\Java\jdk1.7.0_45\bin>java -versionjava version "1.7.0_45"Java(TM) SE Runtime Environment (build 1.7.0_45-b18)Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

请注意提到的64 位。你可能会发现这个SO answer有用。

关于c# - 如何使用 C# 以编程方式检查 jre 环境是 32 位还是 64 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682654/

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