<?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[RegSetValueEx speichert nur Datenmüll]]></title><description><![CDATA[<p>Hallo,<br />
will im meinem Programm einen funktion einbauen, damit sich die dateiendungen automatisch mit meinem programm öffnen. mein programm heisst &quot;kstat&quot; und hier ist der code:</p>
<pre><code class="language-cpp">HKEY handle;

RegCreateKeyEx(HKEY_CLASSES_ROOT, L&quot;.kst&quot;, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &amp;handle, NULL);

RegOpenKeyEx(HKEY_CLASSES_ROOT, L&quot;.kst&quot;, 0, KEY_ALL_ACCESS, &amp;handle);

RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)&quot;kstat&quot;, strlen(&quot;kstat&quot;);

RegCloseKey(handle);
</code></pre>
<p>Er hat die die schlüssel alle erstellt und alles richtig, nur in HKEY_CLASSES_ROOT\.kst im default wert hat er statt &quot;kstat&quot; einfach irgendwie nur zwei solcher rechtecke rein, als ob es praktisch &quot;datenmüll&quot; ist. stimmt etwas an meiner denkweise im code nicht?</p>
<p>danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/113974/regsetvalueex-speichert-nur-datenmüll</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 00:41:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/113974.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Jun 2005 22:22:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Tue, 28 Jun 2005 22:22:31 GMT]]></title><description><![CDATA[<p>Hallo,<br />
will im meinem Programm einen funktion einbauen, damit sich die dateiendungen automatisch mit meinem programm öffnen. mein programm heisst &quot;kstat&quot; und hier ist der code:</p>
<pre><code class="language-cpp">HKEY handle;

RegCreateKeyEx(HKEY_CLASSES_ROOT, L&quot;.kst&quot;, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &amp;handle, NULL);

RegOpenKeyEx(HKEY_CLASSES_ROOT, L&quot;.kst&quot;, 0, KEY_ALL_ACCESS, &amp;handle);

RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)&quot;kstat&quot;, strlen(&quot;kstat&quot;);

RegCloseKey(handle);
</code></pre>
<p>Er hat die die schlüssel alle erstellt und alles richtig, nur in HKEY_CLASSES_ROOT\.kst im default wert hat er statt &quot;kstat&quot; einfach irgendwie nur zwei solcher rechtecke rein, als ob es praktisch &quot;datenmüll&quot; ist. stimmt etwas an meiner denkweise im code nicht?</p>
<p>danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819406</guid><dc:creator><![CDATA[ulli82]]></dc:creator><pubDate>Tue, 28 Jun 2005 22:22:31 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Wed, 29 Jun 2005 05:03:25 GMT]]></title><description><![CDATA[<p>Ich denke, es liegt daran, dass du Unicode und ANSI vermischst - bei RegCreateKeyEx und RegOpenKeyEx hast du den Schlüssel in Unicode angegeben (lieber das TEXT-Makro verwenden), also scheinst du wohl UNICODE bzw. _UNICODE definiert zu haben. Bei RegSetValueEx hast du den String aber ganz normal angegeben - das funktioniert dann so natürlich nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/819428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819428</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 29 Jun 2005 05:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Wed, 29 Jun 2005 08:00:32 GMT]]></title><description><![CDATA[<p>danke. jetzt trägt er keinen datenmüll mehr ein, aber leider nur die ersten beiden zeichen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">HKEY handle;

RegCreateKeyEx(HKEY_CLASSES_ROOT, TEXT(&quot;.kst&quot;), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &amp;handle, NULL);

RegOpenKeyEx(HKEY_CLASSES_ROOT, TEXT(&quot;.kst&quot;), 0, KEY_ALL_ACCESS, &amp;handle);

RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)TEXT(&quot;KStat&quot;), strlen(&quot;KStat&quot;));

RegCloseKey(handle);
</code></pre>
<p>also nur &quot;KS&quot; wird dort eingetragen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/819505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819505</guid><dc:creator><![CDATA[ulli82]]></dc:creator><pubDate>Wed, 29 Jun 2005 08:00:32 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Wed, 29 Jun 2005 13:40:29 GMT]]></title><description><![CDATA[<p>strlen(&quot;KStat&quot;) funktioniert so nicht bei Unicode. Du musst ja die Anzahl an Bytes und nicht die Zeichenzahl übergeben - eher so irgendwie:</p>
<pre><code class="language-cpp">WCHAR szData = TEXT(&quot;KStat&quot;);
RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)szData, sizeof(szData));
</code></pre>
<p>Ist allerdings ungetestet (bin mir mit sizeof gerade nicht ganz sicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/819813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819813</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 29 Jun 2005 13:40:29 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Wed, 29 Jun 2005 14:36:47 GMT]]></title><description><![CDATA[<p>flenders schrieb:</p>
<blockquote>
<p>strlen(&quot;KStat&quot;) funktioniert so nicht bei Unicode. Du musst ja die Anzahl an Bytes und nicht die Zeichenzahl übergeben - eher so irgendwie:</p>
<pre><code class="language-cpp">WCHAR szData = TEXT(&quot;KStat&quot;);
RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)szData, sizeof(szData));
</code></pre>
<p>Ist allerdings ungetestet (bin mir mit sizeof gerade nicht ganz sicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
</blockquote>
<p>Müsste ein PWCHAR sein und da funktioniert sizeof natürlich nicht (ergäbe 4).</p>
<p>Hier mal die Nur-Unicode-Variante, daher auch keine TEXT-Makro, da es ohne Unicode sowieso nicht kompilieren würde. Will man es kompatibel mit beiden Zeichensätzen machen, müsste man den Typ TCHAR verwenden und bei der Bufferlängenberechnung dann eben zwischen beiden Fällen unterscheiden.</p>
<pre><code class="language-cpp">wchar_t *str = L&quot;KStat&quot;;
	size_t bufsize = ( wcslen(str)+1 ) * sizeof(wchar_t);

	HKEY handle; 

	RegCreateKeyEx(HKEY_CLASSES_ROOT, L&quot;.kst&quot;, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &amp;handle, NULL); 
	RegOpenKeyEx(HKEY_CLASSES_ROOT, L&quot;.kst&quot;, 0, KEY_ALL_ACCESS, &amp;handle); 
	RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)str, bufsize); 
	RegCloseKey(handle);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/819866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/819866</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Wed, 29 Jun 2005 14:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Wed, 29 Jun 2005 18:57:22 GMT]]></title><description><![CDATA[<p>Sorry, hatte da einen Denkfehler gemacht - aber so sollte es auch klappen:</p>
<pre><code class="language-cpp">TCHAR szData[] = TEXT(&quot;KStat&quot;);
RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)szData, sizeof(szData));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/820051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820051</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Wed, 29 Jun 2005 18:57:22 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Thu, 30 Jun 2005 07:33:58 GMT]]></title><description><![CDATA[<p>danke für die vielen antworten. ich habe gestern noch etwas herumexperementiert und habe es so hinbekommen:</p>
<pre><code class="language-cpp">RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)TEXT(&quot;KStat&quot;), (strlen(&quot;KStat&quot;)*2));
</code></pre>
<p>Ist das jetzt zufallen, dass er &quot;KStat&quot; komplett reinschreibt oder wird es nicht funktionieren, wenn mal irgendein wort kommt wie &quot;KStatGeneratorProgrammWeissIchWas&quot;? kann mir meine logik mit dem strlen()*2 nicht ganz erklären :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820315</guid><dc:creator><![CDATA[ulli82]]></dc:creator><pubDate>Thu, 30 Jun 2005 07:33:58 GMT</pubDate></item><item><title><![CDATA[Reply to RegSetValueEx speichert nur Datenmüll on Thu, 30 Jun 2005 11:01:36 GMT]]></title><description><![CDATA[<p>ulli82 schrieb:</p>
<blockquote>
<p>danke für die vielen antworten. ich habe gestern noch etwas herumexperementiert und habe es so hinbekommen:</p>
<pre><code class="language-cpp">RegSetValueEx(handle, NULL, 0, REG_SZ, (BYTE *)TEXT(&quot;KStat&quot;), (strlen(&quot;KStat&quot;)*2));
</code></pre>
<p>Ist das jetzt zufallen, dass er &quot;KStat&quot; komplett reinschreibt oder wird es nicht funktionieren, wenn mal irgendein wort kommt wie &quot;KStatGeneratorProgrammWeissIchWas&quot;? kann mir meine logik mit dem strlen()*2 nicht ganz erklären :p</p>
</blockquote>
<p>Unicode-Zeichen sind ja 16 bit breit und dein Stringliteral, das du strlen übergibst, ist ein 8Bit-String. Die Tatsache, dass es ohne Einbeziehung der Nullterminierung funktioniert ist wohl eher zufällig, laut MSDN erwartet diese Funktion jedenfalls einen nullterminierten Buffer.<br />
strlen(TEXT(&quot;KStat&quot;)) würde unter Unicode jedenfalls nicht funktionieren.<br />
Mach es einfach so, wie es Flenders geschrieben hat, das kompiliert dann mit und ohne Unicode. Es ist außerdem unschön, die Stringliterale mehrfach direkt in die Funktionsaufrufe zu schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/820488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/820488</guid><dc:creator><![CDATA[masterofx32]]></dc:creator><pubDate>Thu, 30 Jun 2005 11:01:36 GMT</pubDate></item></channel></rss>