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 で微妙にレジストリのパスが異なります。