Click here to Skip to main content
15,889,704 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerI'm going with it, it produces the results I need. Pin
jkirkerx27-Oct-11 10:33
professionaljkirkerx27-Oct-11 10:33 
AnswerRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
Adorjáni Alpár27-Oct-11 10:50
Adorjáni Alpár27-Oct-11 10:50 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx27-Oct-11 11:48
professionaljkirkerx27-Oct-11 11:48 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx27-Oct-11 13:28
professionaljkirkerx27-Oct-11 13:28 
AnswerRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
Peter_in_278027-Oct-11 13:39
professionalPeter_in_278027-Oct-11 13:39 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx28-Oct-11 6:24
professionaljkirkerx28-Oct-11 6:24 
AnswerRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
Richard MacCutchan27-Oct-11 21:59
mveRichard MacCutchan27-Oct-11 21:59 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx28-Oct-11 6:41
professionaljkirkerx28-Oct-11 6:41 
This is code I copied from the net and modified in the my first week of c++. In the other uses of the code, I used a CString, but this time i needed to modify the results. It didn't dawn on me till I was bowling last night that the result is Unicode, and I should leave it as Unicode, so I can support French and Spanish. I think SQL Server Instances can be named UniCode, thus that's why the registry values are stored that way.

Alright, lesson learned.


char* CA_Registry::_get_SQLServer_InstalledInstances( void )
{
	HKEY keyHandle;
	char rgValue[1024];
	char szInstance[1024];
	CString regPath = L"SOFTWARE\\Microsoft\\Microsoft SQL Server\\";
	CString regReq = L"InstalledInstances";
	DWORD size1 = sizeof(rgValue);
	DWORD Type;
	DWORD dwType = 0;
	DWORD regStatus = REG_MULTI_SZ;

	int ndx=0;
	int szRgVal=0;
	int maxStr=0;
	bool doubleZero;
			
	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, regPath, 0, KEY_QUERY_VALUE, &keyHandle) == ERROR_SUCCESS) {
		dwType = REG_MULTI_SZ;
		regStatus = RegQueryValueEx( keyHandle, regReq, NULL, &Type, (LPBYTE)rgValue, &size1);
			
		switch ( regStatus ) {
			case ERROR_SUCCESS:
				ndx = 0;
				doubleZero = false;
				szRgVal = sizeof(rgValue);
	
				for(int i=0; i < szRgVal; i++) {
                    if (!rgValue[i] == '\0\0') {
                        szInstance[ndx++] = rgValue[i];
                        doubleZero = false;
                    }
                    else {
                        if (doubleZero == false) {
                            szInstance[ndx++] = ';';
                            doubleZero = true;
                        }
                        else {
                            szInstance[ndx++] = '\0';
                            break;
                        }
                    }
                    i++;
				}
	
				maxStr = strlen(szInstance);	
				szInstance[maxStr-0] = (char)'\0';
				printf(" SQL Server Instance: %s %i\n", szInstance, strlen(szInstance) );				
								
				RegCloseKey(keyHandle);
				cout << "key was read successfully\n";
				break;

			case ERROR_MORE_DATA:
				cout << "Buffer too small\n";
				break;			

			default:			
				cout << "Count not read key\n";
		}
	}
	else {
		cout << "Can not open key";
		cin.ignore();
	}
	
	int strSize = sizeof(szInstance);	
	char *szReturnValue = new char[strSize];	
	for(int i = 0; i < strSize; i++) {
		szReturnValue[i]=szInstance[i];		
	}	
	maxStr=strlen(szReturnValue);	
	szReturnValue[maxStr-0]=(char)'\0';

	return szReturnValue;

	delete [] szReturnValue;
}

GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
Richard MacCutchan28-Oct-11 6:57
mveRichard MacCutchan28-Oct-11 6:57 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx28-Oct-11 7:17
professionaljkirkerx28-Oct-11 7:17 
AnswerI rewrote the my function for WCHAR Pin
jkirkerx28-Oct-11 8:22
professionaljkirkerx28-Oct-11 8:22 
AnswerRe: I rewrote the my function for WCHAR Pin
Richard MacCutchan28-Oct-11 23:13
mveRichard MacCutchan28-Oct-11 23:13 
GeneralRe: I rewrote the my function for WCHAR Pin
jkirkerx29-Oct-11 7:39
professionaljkirkerx29-Oct-11 7:39 
GeneralRe: I rewrote the my function for WCHAR Pin
jkirkerx29-Oct-11 8:20
professionaljkirkerx29-Oct-11 8:20 
GeneralRe: I rewrote the my function for WCHAR Pin
Richard MacCutchan29-Oct-11 22:21
mveRichard MacCutchan29-Oct-11 22:21 
GeneralRe: I rewrote the my function for WCHAR Pin
jkirkerx30-Oct-11 6:32
professionaljkirkerx30-Oct-11 6:32 
GeneralRe: I rewrote the my function for WCHAR Pin
Richard MacCutchan30-Oct-11 7:16
mveRichard MacCutchan30-Oct-11 7:16 
GeneralRe: I rewrote the my function for WCHAR - grovel Pin
Richard MacCutchan29-Oct-11 23:19
mveRichard MacCutchan29-Oct-11 23:19 
QuestionRegistry usage in MFC Doc/ View - opinions / commentary wanted Pin
Vaclav_27-Oct-11 5:18
Vaclav_27-Oct-11 5:18 
AnswerRe: Registry usage in MFC Doc/ View - opinions / commentary wanted Pin
Albert Holguin27-Oct-11 5:35
professionalAlbert Holguin27-Oct-11 5:35 
Questionfopen crashed when special characters found. Pin
tagopi27-Oct-11 2:12
tagopi27-Oct-11 2:12 
AnswerRe: fopen crashed when special characters found. Pin
Luc Pattyn27-Oct-11 2:53
sitebuilderLuc Pattyn27-Oct-11 2:53 
AnswerRe: fopen crashed when special characters found. Pin
Chris Losinger27-Oct-11 3:22
professionalChris Losinger27-Oct-11 3:22 
AnswerRe: fopen crashed when special characters found. Pin
David Crow27-Oct-11 4:49
David Crow27-Oct-11 4:49 
AnswerRe: fopen crashed when special characters found. Pin
Andrew Brock27-Oct-11 7:43
Andrew Brock27-Oct-11 7:43 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.