<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit RegEnumValue]]></title><description><![CDATA[<p>hallo,</p>
<p>mit RegQueryInfoKey hol ich mir die anzahl der werte unter einem schlüßel.<br />
in einer schleife lese ich die registry mittels RegEnumValue anhand des übergebene Index aus.</p>
<p>im debug modus klappt das wunderbar, nur nicht im release modus, da bekomm ich nur einen wert zurück und alle anderen werden verschluckt.</p>
<p>weis einer warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196510/problem-mit-regenumvalue</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 04:32:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196510.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Oct 2007 17:19:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit RegEnumValue on Tue, 30 Oct 2007 17:21:50 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>mit RegQueryInfoKey hol ich mir die anzahl der werte unter einem schlüßel.<br />
in einer schleife lese ich die registry mittels RegEnumValue anhand des übergebene Index aus.</p>
<p>im debug modus klappt das wunderbar, nur nicht im release modus, da bekomm ich nur einen wert zurück und alle anderen werden verschluckt.</p>
<p>weis einer warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394763</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Tue, 30 Oct 2007 17:21:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Tue, 30 Oct 2007 17:28:36 GMT]]></title><description><![CDATA[<p>Code zeigen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394768</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 30 Oct 2007 17:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Tue, 30 Oct 2007 17:44:56 GMT]]></title><description><![CDATA[<p>meine RegEnumValue Funktion</p>
<pre><code>BOOL EnumStrValue(HKEY hMasterKey, LPCTSTR lpSubKey, DWORD dwIndex, LPTSTR lpValueName)
{
	HKEY hKey;
	DWORD dwType=REG_NONE;
	DWORD dwValueNameSize;
	BYTE Data[DATASIZE]=&quot;&quot;;
	DWORD dwDataSize;

	//RegOpenKeyEx(hMasterKey, lpSubKey, NULL, KEY_QUERY_VALUE,&amp;hKey);

	RegOpenKey(hMasterKey, lpSubKey,&amp;hKey);

	LONG Result = RegEnumValue(hKey, dwIndex, lpValueName, &amp;dwValueNameSize,
								NULL, &amp;dwType, (BYTE*)Data, &amp;dwDataSize);

	RegCloseKey(hKey);

	return (Result == ERROR_SUCCESS);
}
</code></pre>
<p>meine schleife in der ich alle werte abfrage</p>
<pre><code>INFOKEY InfKey;

	QueryInfoKey(hMasterKey, szSubKey, &amp;InfKey);

	for (DWORD dw=0;dw&lt;InfKey.dwValues;dw++)
	{
		char szValueName[1024];

		EnumStrValue(hMasterKey, szSubKey, dw,szValueName);

		DWORD dwLen =  QueryStrValueEx(hMasterKey, szSubKey, szValueName, szParameter);

		...

	}
</code></pre>
<p>meine funktion QueryInfoKey funktioniert im debug &amp; release modus, in beiden fällen liefert es mir die korreckte anzahl an werten in dem schlüßel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394777</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Tue, 30 Oct 2007 17:44:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Tue, 30 Oct 2007 17:50:04 GMT]]></title><description><![CDATA[<p>dein dwValueNameSize und dwDataSize ist zb ned initialisiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394778</guid><dc:creator><![CDATA[tenchou]]></dc:creator><pubDate>Tue, 30 Oct 2007 17:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Tue, 30 Oct 2007 17:59:59 GMT]]></title><description><![CDATA[<p>ok hab's abgeändert</p>
<pre><code>DWORD dwValueNameSize=sizeof(lpValueName);
BYTE Data[1024]=&quot;&quot;;
DWORD dwDataSize=sizeof(Data);
</code></pre>
<p>mit dem unterschied das mir ein andere wert angezeigt wird als ohne inizialisierung jedoch werden weiterhin alle anderen werte verschluckt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394787</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Tue, 30 Oct 2007 17:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Wed, 31 Oct 2007 07:07:19 GMT]]></title><description><![CDATA[<p>Du darfst keinen neuen Schlüssel öffnen, das macht doch keinen Sinn.<br />
Warum behandelst Du nicht alles in einer Schleife ohne diese Extra Funktion, die sowieso überflüssig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394981</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 31 Oct 2007 07:07:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Wed, 31 Oct 2007 17:16:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Du darfst keinen neuen Schlüssel öffnen, das macht doch keinen Sinn</p>
</blockquote>
<p>hmm nun ja mir hat das niemand gezeigt wies richtig gehen könnte, und nen sinn hat das für mich schon, ich hab mir ne ganze klasse gemacht die mir registry funktionen bereitstellt. da es mir sehr lästig war jedes mal wenn ich irgendwo nen wert aus der registry haben wollte erst die registry zu öffnen dann wieder zu schließen (bzw. das nicht zu vergessen) hab ich das in die jeweilige funktion gelegt.</p>
<p>ich geb dir natürlich recht wenn man das in einer schleife macht ist es überflüßig. ne kühlschranktür macht man ja auch nicht auf und zu bis man alles zum essen hat.</p>
<p>aber ich habs jetzt gefunden woran es lag. anscheinend muss man bei RegEnumValue die DWORD werte nicht mit sizeof belegen sondern direckt mit einem wert. jedenfals funzt es jetzt.</p>
<pre><code>DWORD dwValueNameSize=1024;
DWORD dwDataSize=1024;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1395429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395429</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Wed, 31 Oct 2007 17:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Wed, 31 Oct 2007 18:02:35 GMT]]></title><description><![CDATA[<p>Sicher solltest Du sizeof verwenden, feste Werte sind kein guter Stil. Nur musst Du es vor jedem Aufruf erneut machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395463</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 31 Oct 2007 18:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Wed, 31 Oct 2007 18:11:15 GMT]]></title><description><![CDATA[<p>würde ja gerne sizeof verwenden nur funzt dann RegEnumValue in der release version nicht. mir schmeckt das selber so nicht.<br />
...<br />
und genau das mach ich ja, vor jedem aufruf die DWORD werte erneut mit sizeof belegen, da meine funktion ja in einer schleife aufgerufen wird.</p>
<p>bei jeder anderen registry funktion klappt das auch mit sizeof, nur eben nicht bei RegEnumValue.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395472</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Wed, 31 Oct 2007 18:11:15 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Wed, 31 Oct 2007 18:40:12 GMT]]></title><description><![CDATA[<p>Kein Wunder:</p>
<pre><code class="language-cpp">DWORD dwValueNameSize=sizeof(lpValueName);
</code></pre>
<p>liefert 4, denn der Zeiger ist nur 4 Bytes groß. Es gibt in C++ hier keine Möglichkeit zu ermitteln, wie groß der Array ist auf den der Zeiger verweist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395502</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 31 Oct 2007 18:40:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Wed, 31 Oct 2007 19:57:12 GMT]]></title><description><![CDATA[<p>hmm,<br />
das heist also ich muss die größe für die DWORD werte direckt von der variable selbst ermitteln &amp; mit übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395576</guid><dc:creator><![CDATA[*rT*f*Ct]]></dc:creator><pubDate>Wed, 31 Oct 2007 19:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit RegEnumValue on Thu, 01 Nov 2007 07:54:55 GMT]]></title><description><![CDATA[<p>@rT!f@Ct schrieb:</p>
<blockquote>
<p>hmm,<br />
das heist also ich muss die größe für die DWORD werte direckt von der variable selbst ermitteln &amp; mit übergeben.</p>
</blockquote>
<p>Was hast denn Du gedacht?<br />
Diese DWORDs geben an, wieviel Daten übertragen werden dürfen. Entsprechend wird auch aufgehört, wenn eben nicht alle Daten übertragen werden.</p>
<p>Alleine dadurch, dass Du eine separate Funktion EnumStrValue geschaffen hast, hast Du Dir mehr Probleme als Vorteile verschat. Warum verwendest Du nicht die entsprechendne API Funktionen in der Loop</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395722</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 01 Nov 2007 07:54:55 GMT</pubDate></item></channel></rss>