レジストリを読むことができたHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0
。ただし、Professional/Ultimateなど、エディションに関する情報は提供されません。
どうすればプログラムで情報を取得できますか(できればpython)?
Visual Studioでは、[ヘルプ]タブの[Microsoft Visual Studioについて]タブで必要な情報を確認できます。
インストールされたVisual Studioソフトウェアを開き、ヘルプメニューをクリックして、Microsoft Visual Studioについて-> Visual Studioバージョンを取得します
誰かがC#の例を必要とする場合:
var registry = Registry.ClassesRoot;
var subKeyNames = registry.GetSubKeyNames();
var regex = new Regex(@"^VisualStudio\.edmx\.(\d+)\.(\d+)$");
foreach (var subKeyName in subKeyNames)
{
var match = regex.Match(subKeyName);
if (match.Success)
Console.WriteLine("V" + match.Groups[1].Value + "." + match.Groups[2].Value);
}
それほど微妙ではありませんが、インストール場所にインストールされているバージョン名を含むフォルダーがあります。
例:私が持っている:
C:\ Program Files\Microsoft Visual Studio 9.0\Microsoft Visual Studio 2008 Standard Edition-ENU
そして
C:\ Program Files\Microsoft Visual Studio 10.0\Microsoft Visual Studio 2010 Professional-ENU
上記のレジストリキーからインストール場所を見つけることができます。
あるいは、これはいくつかの場所のレジストリにあります。例:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Setup\Microsoft Visual Studio 2008 Standard Edition-ENU
文字列が入った値とキーがたくさんあります。Regedit> Edit> Find関数で「Microsoft Visual Studio 2010」を探して見つけることができます。
必要なものを選択して、文字列の一致を少し行うだけです。
この質問につまずいた人にとって、C++を実行している場合の答えは次のとおりです。vsバージョンに基づいたライブラリに対してリンクする2015年以降の例のように、vsバージョンのcppコードをチェックインできます。
#if (_MSC_VER > 1800)
#pragma comment (lib, "legacy_stdio_definitions.lib")
#endif
これはリンク時に行われ、追加の実行時コストは発生しません。
vswhere の最近のリリースでは、このスレッドの情報はすべて古くなっています。それをダウンロードして使用してください。
Cmd C:\ Program Files(x86)\ Microsoft Visual Studio\Installer> vswhere.exeでパスを実行します