Visual Studio 2015, 2017 のパスを取得する

Visual Studio 2015 のパスを取得するには下記のコードでできるようです。

TCHAR szVisualStudioPath[MAX_PATH];
HKEY hKey;
DWORD dwPosition;
DWORD dwType = REG_SZ;
DWORD dwByte = MAX_PATH * sizeof(TCHAR);
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
#ifdef _WIN64
	TEXT("SOFTWARE\\WOW6432Node\\Microsoft\\VisualStudio\\14.0\\Setup\\vs"),
#else
	TEXT("SOFTWARE\\Microsoft\\VisualStudio\\14.0\\Setup\\vs"),
#endif
	0,
	0,
	REG_OPTION_NON_VOLATILE,
	KEY_READ,
	NULL,
	&hKey,
	&dwPosition) == ERROR_SUCCESS)
{
	if (RegQueryValueEx(hKey, TEXT("EnvironmentPath"), NULL, &dwType, (BYTE *)szVisualStudioPath, &dwByte) == ERROR_SUCCESS)
	{
		MessageBox(hWnd, szVisualStudioPath, TEXT("確認"), 0);
	}
	RegCloseKey(hKey);
}

Visual Studio 2017 のパスを取得するには下記のコードでできるようです。

TCHAR szVisualStudioPath[MAX_PATH];
HKEY hKey;
DWORD dwPosition;
DWORD dwType = REG_SZ;
DWORD dwByte = MAX_PATH * sizeof(TCHAR);
if (SendMessage(hOpenCheck, BM_GETCHECK, 0, 0))
{
	if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
#ifdef _WIN64
		TEXT("SOFTWARE\\WOW6432Node\\Microsoft\\VisualStudio\\SxS\\VS7"),
#else
		TEXT("SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7"),
#endif
		0, 0, 0, KEY_READ, 0, &hKey, &dwPosition) == ERROR_SUCCESS)
	{
		if (RegQueryValueEx(hKey, TEXT("15.0"), NULL, &dwType, (BYTE *)szVisualStudioPath, &dwByte) == ERROR_SUCCESS)
		{
			PathAppend(szVisualStudioPath, TEXT("Common7"));
			PathAppend(szVisualStudioPath, TEXT("IDE"));
			PathAppend(szVisualStudioPath, TEXT("devenv.exe"));
			MessageBox(hWnd, szVisualStudioPath, TEXT("確認"), 0);
		}
		RegCloseKey(hKey);
	}
}

2015 と 2017 で微妙にレジストリのパスが異なります。


kenjinote

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする