Zapis tekstu do rejestru

0

Hej

Mam problem z zapisaniem "długiego" tekstu do rejestru. Konkretnie około 80 znaków.
Nie wiem dlaczego, ale zapisuje mi tylko pierwsze 36 znaków.

Funkcja zapisująca do rejestru:

static int strLen( WCHAR * str )
{
	int i = 0;
	for ( i; str[i] != 0; i++ );
	return i;
}
int SetAutoStart()
{
	const int buffSize = 4096;
	HKEY	hkRun;
	LONG	result;
	WCHAR	filePath[buffSize];


	result = RegOpenKeyEx( HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hkRun );
	if( result != ERROR_SUCCESS )
		return 1;

	GetModuleFileName( 0, filePath, buffSize );
	int size = strLen( filePath );
	RegSetValueEx( hkRun, L"Aplikacja", 0, REG_SZ, (BYTE *)filePath, size );
	return 0;
}

Jeśli po utworzeniu ręcznie edytuje ten rekord i dopisuje kilkanaście nowych znaków to funkcja RegQueryValueEx wywołana do odczytania wartości z tego wpisu zwraca poprawnie wszystkie znaki bez względu na ilość.

0

Już odkryłem czemu nie działa.
Rozmiar zapisywanych danych trzeba w tym wypadku pomnożyć przez 2.
Dlaczego?
Dlatego, że WCHAR ma rozmiar dwóch bajtów, a trzeba je zrzutować na tablicę bajtów.

RegSetValueEx( hkRun, L"Aplikacja", 0, REG_SZ, (BYTE *)filePath, size * 2 );

1 użytkowników online, w tym zalogowanych: 0, gości: 1