Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » Coffee corner » What next?
Re: What next? [message #46520 is a reply to message #46517] Thu, 19 May 2016 17:17 Go to previous messageGo to previous message
omari is currently offline  omari
Messages: 266
Registered: March 2010
Experienced Member
Hi,

I think, we can find all MSCxx installation paths, by enumeration of registry subkeys and values.

please, test the function below, and let us know if it success or fail to detect your.

on my win7 64, it show:

SDK found:
C:\Program Files (x86)\Windows Kits\10
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A
C:\Program Files (x86)\Windows Kits\8.0
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A
C:\Program Files (x86)\Windows Kits\8.1
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A
Visual Studio found:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\
C:\Program Files (x86)\Microsoft Visual Studio 12.0\
C:\Program Files (x86)\Microsoft Visual Studio 14.0\



the code:

#include <Core/Core.h>
using namespace Upp;

Vector<String> GetWinRegSubKeys(String reg_path, HKEY base_key = HKEY_LOCAL_MACHINE)
{
	HKEY key = 0;
	DWORD  dwSize = 0;
	DWORD count; // subkeys
	
	Vector<String> v;
	
	if(RegOpenKeyEx(base_key, reg_path, 0, KEY_READ, &key) != ERROR_SUCCESS)
		return v;
	StringBuffer buf(2048);
	
	RegQueryInfoKey(key,NULL,NULL,NULL,&count,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

    for(int i=0; i< count; i++){
        dwSize = 2048;
        RegEnumKeyEx(key,i,buf,&dwSize,NULL,NULL,NULL,NULL);
        v.Add( String(buf.Begin(), dwSize)) ;
    }

    RegCloseKey(key);
    return v;
}

Vector<String> GetWinRegValues(String reg_path, HKEY base_key = HKEY_LOCAL_MACHINE)
{
	HKEY key = 0;
	DWORD  dwSize = 0;
	DWORD count; // subkeys
	
	Vector<String> v;
	
	if(RegOpenKeyEx(base_key, reg_path, 0, KEY_READ, &key) != ERROR_SUCCESS)
		return v;
	StringBuffer buf(2048);
	
	RegQueryInfoKey(key,NULL,NULL,NULL,NULL,NULL,NULL, &count,NULL,NULL,NULL,NULL);

    for(int i=0; i< count; i++){
        dwSize = 2048;
		RegEnumValue(key, i, buf, &dwSize, NULL, NULL, NULL, NULL);
        v.Add( String(buf.Begin(), dwSize)) ;
    }

    RegCloseKey(key);
    return v;
}

String NormalizePathNN(const String& path)
{
	return IsNull(path) ? path : NormalizePath(path);
}

void FindMSC()
{
	Vector<String> v = GetWinRegSubKeys("SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows", HKEY_LOCAL_MACHINE);
	
	if(v.GetCount())
		LOG("SDK found:");
	else
		LOG("no SDK found");
	for(int i = 0; i < v.GetCount(); i++)
	{
		LOG(NormalizePathNN(GetWinRegString("InstallationFolder",
		                                       "SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows\\" + v[i],
		                                       HKEY_LOCAL_MACHINE)));
	}
		
	v = GetWinRegValues("SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7", HKEY_LOCAL_MACHINE);
	
	if(v.GetCount())
		LOG("Visual Studio found:");
	else
		LOG("No Visual Studio found");
	for(int i = 0; i < v.GetCount(); i++)
	{
		LOG(GetWinRegString(v[i], "SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7", HKEY_LOCAL_MACHINE));
	}
}

CONSOLE_APP_MAIN
{
	FindMSC();
}





regards
omari.
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Members of structure are finally accessible through plain index
Next Topic: I've just joined the wonderful world of Linux software distribution!
Goto Forum:
  


Current Time: Sun May 12 04:36:14 CEST 2024

Total time taken to generate the page: 0.02333 seconds