<?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[Registry: Problem beim lesen der ProductId]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Für mein Vorhaben benötige ich die Windows ProductId aus der Registry. (REG_SZ == String)<br />
Ich habe mich schonmal etwas schlau gemacht, doch ich komme zu keinem Ergebnis mit meinem Code:</p>
<pre><code class="language-cpp">int main()
{
    HKEY hKey = 0;
    char buf[255] = {0};
    DWORD dwType = 0;
    DWORD dwBufSize = sizeof(buf);
    const char* subkey = &quot;SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion&quot;;

    if( RegOpenKey(HKEY_LOCAL_MACHINE,subkey,&amp;hKey) == ERROR_SUCCESS)
    {
        dwType = REG_SZ;
        if( RegQueryValueEx(hKey,&quot;ProductId&quot;,0, &amp;dwType, (BYTE*)buf, &amp;dwBufSize) == ERROR_SUCCESS)
        {
            cout &lt;&lt; &quot;Windows Produkt-ID: '&quot; &lt;&lt; buf &lt;&lt; &quot;'\n&quot;;
        }
        else
        {
            cout &lt;&lt; &quot;Die Suche nach der Produkt-ID ist nicht moeglich.\n&quot;;
        }
    }

    else
    {
        //EIN ANDERER FEHLER IST AUFGETRETEN
    }

    RegCloseKey(hKey);
    return 0;

}
</code></pre>
<p>Compiler bringt keinen Error, Programm startet normal, doch ich erhalte meinen Fehler: &quot;Die Suche nach der Produkt-ID ist nicht moeglich.&quot;</p>
<p>Was hab ich da falsch gemacht?</p>
<p>MfG<br />
myZeL</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274956/registry-problem-beim-lesen-der-productid</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 06:16:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274956.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Oct 2010 08:30:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Wed, 06 Oct 2010 08:30:02 GMT]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Für mein Vorhaben benötige ich die Windows ProductId aus der Registry. (REG_SZ == String)<br />
Ich habe mich schonmal etwas schlau gemacht, doch ich komme zu keinem Ergebnis mit meinem Code:</p>
<pre><code class="language-cpp">int main()
{
    HKEY hKey = 0;
    char buf[255] = {0};
    DWORD dwType = 0;
    DWORD dwBufSize = sizeof(buf);
    const char* subkey = &quot;SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion&quot;;

    if( RegOpenKey(HKEY_LOCAL_MACHINE,subkey,&amp;hKey) == ERROR_SUCCESS)
    {
        dwType = REG_SZ;
        if( RegQueryValueEx(hKey,&quot;ProductId&quot;,0, &amp;dwType, (BYTE*)buf, &amp;dwBufSize) == ERROR_SUCCESS)
        {
            cout &lt;&lt; &quot;Windows Produkt-ID: '&quot; &lt;&lt; buf &lt;&lt; &quot;'\n&quot;;
        }
        else
        {
            cout &lt;&lt; &quot;Die Suche nach der Produkt-ID ist nicht moeglich.\n&quot;;
        }
    }

    else
    {
        //EIN ANDERER FEHLER IST AUFGETRETEN
    }

    RegCloseKey(hKey);
    return 0;

}
</code></pre>
<p>Compiler bringt keinen Error, Programm startet normal, doch ich erhalte meinen Fehler: &quot;Die Suche nach der Produkt-ID ist nicht moeglich.&quot;</p>
<p>Was hab ich da falsch gemacht?</p>
<p>MfG<br />
myZeL</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961969</guid><dc:creator><![CDATA[myZeL]]></dc:creator><pubDate>Wed, 06 Oct 2010 08:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Wed, 06 Oct 2010 08:37:54 GMT]]></title><description><![CDATA[<p>jz hab ich extra in der msdn gesucht, weil ich mich über &quot;error_success&quot; lustig machen wollte... ^^</p>
<pre><code class="language-cpp">dwRet = RegQueryValueEx( HKEY_PERFORMANCE_DATA,
                             TEXT(&quot;Global&quot;),
                             NULL,
                             NULL,
                             (LPBYTE) PerfData,
                             &amp;cbData );
    while( dwRet == ERROR_MORE_DATA )
    {
        // Get a buffer that is big enough.

        BufferSize += BYTEINCREMENT;
        PerfData = (PPERF_DATA_BLOCK) realloc( PerfData, BufferSize );
        cbData = BufferSize;

        printf(&quot;.&quot;);
        dwRet = RegQueryValueEx( HKEY_PERFORMANCE_DATA,
                         TEXT(&quot;Global&quot;),
                         NULL,
                         NULL,
                         (LPBYTE) PerfData,
                         &amp;cbData );
    }
    if( dwRet == ERROR_SUCCESS )
        printf(&quot;\n\nFinal buffer size is %d\n&quot;, BufferSize);
    else printf(&quot;\nRegQueryValueEx failed (%d)\n&quot;, dwRet);
</code></pre>
<p>mal auf ERROR_MORE_DATA geprüft?</p>
<p>bb</p>
<p>PS: Falsches Unterforum - richtig wäre WinAPI gewesen. Aber dich wird scho nen Mod dahin verschieben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961974</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 06 Oct 2010 08:37:54 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Wed, 06 Oct 2010 09:14:15 GMT]]></title><description><![CDATA[<p>Ich sehe keinen Fehler.<br />
Jedoch solltest du den Returnwert nicht nur gegen 0 testen, sondern ihn speichern und im Fehlerfall ausgeben. Ist er vielleicht 2? Dann ist der Eintrag nicht vorhanden (<a href="http://msdn.microsoft.com/en-us/library/ms681382%28v=VS.85%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms681382%28v=VS.85%29.aspx</a>).<br />
ERROR_MORE_DATA sollte eigentlich nicht zurückgegeben werden. Blödsinn gelöscht, Unskilled hat Recht.</p>
<p>Edit: Mal mit regedit geschaut, ob der Schlüssel vorhanden ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961989</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Wed, 06 Oct 2010 09:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Wed, 06 Oct 2010 09:11:08 GMT]]></title><description><![CDATA[<p>Vicious Falcon schrieb:</p>
<blockquote>
<p>Ich kann mir auf jeden Fall nicht vorstellen, dass irgendjemand 254 Zeichen abtippen möchte. :p</p>
</blockquote>
<p>ich glaube nicht, dass man den windows-key dort 1:1 abspeichert - hab mal geguckt - das ist auch nicht der key, den man eingibt - allerdings ist er trotzdem deutlich kürzer... ^^</p>
<p>ich habs einfach mal so hier getestet:</p>
<pre><code class="language-cpp">#include &lt;Windows.h&gt;

#include &lt;iostream&gt;
using namespace std;

int main()
{
    HKEY hKey = 0;
    char buf[255] = {0};
    DWORD dwType = 0;
    DWORD dwBufSize = sizeof(buf);
    const char* subkey = &quot;SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion&quot;;

    if( RegOpenKey(HKEY_LOCAL_MACHINE,subkey,&amp;hKey) == ERROR_SUCCESS)
    {
        dwType = REG_SZ;
		DWORD ret = RegQueryValueEx(hKey,&quot;ProductId&quot;,0, &amp;dwType, (BYTE*)buf, &amp;dwBufSize);
		if (ret == ERROR_SUCCESS)
			cout &lt;&lt; &quot;geht doch&quot; &lt;&lt; endl;
		else
			cout &lt;&lt; &quot;fehler: &quot; &lt;&lt; ret &lt;&lt; endl;
    }
    else
    {
        //EIN ANDERER FEHLER IST AUFGETRETEN
    }

    RegCloseKey(hKey);
    return 0;

}
</code></pre>
<p>hier funktioniert es (allerdings hab ich hier auch admin-rechte - vll fehlen die dir?).<br />
du kannst ja mal sagen, was bei dir ausgegeben wird...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961994</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 06 Oct 2010 09:11:08 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Wed, 06 Oct 2010 09:28:57 GMT]]></title><description><![CDATA[<p>Du solltest den Rückgabewert bzw. GetLastError() auswerten, das liefert dir den Grund des Fehlschlags.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1961999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1961999</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 06 Oct 2010 09:28:57 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Wed, 06 Oct 2010 09:36:42 GMT]]></title><description><![CDATA[<p>SetLastError wird in RegQueryValueEx nicht aufgerufen. Im Fehlerfall kann man nur den Returnwert überprüfen (gerade ausprobiert).<br />
Admin-Rechte sollte man nicht benötigen, um _lesend_ auf die Registrierung zuzugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962003</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Wed, 06 Oct 2010 09:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Thu, 07 Oct 2010 11:18:12 GMT]]></title><description><![CDATA[<p>Ok. Danke für die vielen Ratschläge!</p>
<p>Ich habe gerade geschaut: Fehler 2 ...<br />
Pfad usw. stimmt alles. Admin bin ich auch hier unter 7.</p>
<p>Ich möchte nicht den ProduktKey - nur die ProduktID, wie sie auch im Klartext in der Registry zu sehen ist.</p>
<p>@Moderatoren: Bitte ins WinAPI Forum verschieben! Danke.</p>
<p>Gibt es denn noch eine andere Möglichkeit den Wert auszulesen?</p>
<p>EDIT: Mysteriös... wenn ich was anderes als die ProductId auslese (auch reg_sz) dann klappt das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962484</guid><dc:creator><![CDATA[myZeL]]></dc:creator><pubDate>Thu, 07 Oct 2010 11:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Thu, 07 Oct 2010 12:34:38 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich habe gerade geschaut: Fehler 2 ...<br />
Pfad usw. stimmt alles. Admin bin ich auch hier unter 7.</p>
</blockquote>
<p>aber du hast per hand gesucht, ob der schlüssel vorhanden ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962533</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 07 Oct 2010 12:34:38 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Thu, 07 Oct 2010 13:16:12 GMT]]></title><description><![CDATA[<p>Ja natürlich.</p>
<p>Es klappt nur bei diesem Eintrag nicht.</p>
<p>Wenn ich was anderes wie System auslese, dann klappt das einwandfrei.</p>
<p>Ich brauche aber nun mal nur die ProductId.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962545</guid><dc:creator><![CDATA[myZeL]]></dc:creator><pubDate>Thu, 07 Oct 2010 13:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Thu, 07 Oct 2010 13:55:39 GMT]]></title><description><![CDATA[<p>hmm.. und du hast auch wirklich keine buchstabendreher oder so in ProductID drin?<br />
Oder vll ausversehen ProduktID geschrieben?</p>
<p>ansonsten musst du wohl mal im WinAPI-forum explizit nach diesem Problem fragen...<br />
ich kanns jedenfalls nicht reproduzieren.</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962558</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 07 Oct 2010 13:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Registry: Problem beim lesen der ProductId on Thu, 07 Oct 2010 14:50:03 GMT]]></title><description><![CDATA[<p>Vielleicht hast du dir ja auch deine Registry zerschossen und Windows hat kaputte Zugriffsrechte für diesen Schlüssel. Lass dein Programm doch mal auf einem anderen Rechner laufen und guck was dabei rauskommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962596</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 07 Oct 2010 14:50:03 GMT</pubDate></item></channel></rss>