<?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[Zugriff auf Registry prüfen?]]></title><description><![CDATA[<p>Hallo, ich habe folgenden Code welcher ein Eintrag in die Registry reinschreibt, jetzt möchte ich noch paar Überprüfungen einbauen wie Schreib- &amp; Leserechte, also nix besonderes nur zum testen ob Keys gelesen oder gespeichert werden können:</p>
<pre><code class="language-cpp">void AddValue(HKEY KEY, string path, string name, string inhalt) 
{
		HKEY key;
		DWORD dwType;
		DWORD dwSize=300;
		char szString[300];

		RegOpenKeyEx(KEY, path.c_str(),0, KEY_ALL_ACCESS, &amp;key);
		RegQueryValueEx(key, name.c_str(), NULL, &amp;dwType, (BYTE *)szString, &amp;dwSize);

		//Inhalt wird zwischengespeichert
		string TMP = szString;
		TMP += inhalt;

		//Neuer Wert wird gespeichert
		RegSetValueEx(key, name.c_str(), 0, REG_SZ, (unsigned char *)TMP.c_str(), TMP.length());
		RegCloseKey(key);
}
</code></pre>
<p>Also könnt ihr mir bitte nur die Zeilen verändern...THX</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179852/zugriff-auf-registry-prüfen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 13:32:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179852.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Apr 2007 19:42:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Registry prüfen? on Wed, 25 Apr 2007 19:42:17 GMT]]></title><description><![CDATA[<p>Hallo, ich habe folgenden Code welcher ein Eintrag in die Registry reinschreibt, jetzt möchte ich noch paar Überprüfungen einbauen wie Schreib- &amp; Leserechte, also nix besonderes nur zum testen ob Keys gelesen oder gespeichert werden können:</p>
<pre><code class="language-cpp">void AddValue(HKEY KEY, string path, string name, string inhalt) 
{
		HKEY key;
		DWORD dwType;
		DWORD dwSize=300;
		char szString[300];

		RegOpenKeyEx(KEY, path.c_str(),0, KEY_ALL_ACCESS, &amp;key);
		RegQueryValueEx(key, name.c_str(), NULL, &amp;dwType, (BYTE *)szString, &amp;dwSize);

		//Inhalt wird zwischengespeichert
		string TMP = szString;
		TMP += inhalt;

		//Neuer Wert wird gespeichert
		RegSetValueEx(key, name.c_str(), 0, REG_SZ, (unsigned char *)TMP.c_str(), TMP.length());
		RegCloseKey(key);
}
</code></pre>
<p>Also könnt ihr mir bitte nur die Zeilen verändern...THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273537</guid><dc:creator><![CDATA[kernel64]]></dc:creator><pubDate>Wed, 25 Apr 2007 19:42:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Registry prüfen? on Thu, 26 Apr 2007 06:22:15 GMT]]></title><description><![CDATA[<p>Das bekommst Du doch als Ergebnis gesagt, wenn Du zu schreiben versucht und keine Rechte hast.</p>
<p>Dein Code berücksichtigt nicht einen Fehlerfall!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273650</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 26 Apr 2007 06:22:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Registry prüfen? on Thu, 26 Apr 2007 09:04:59 GMT]]></title><description><![CDATA[<p>kernel64 schrieb:</p>
<blockquote>
<p>Hallo, ich habe folgenden Code welcher ein Eintrag in die Registry reinschreibt, jetzt möchte ich noch paar Überprüfungen einbauen wie Schreib- &amp; Leserechte, also nix besonderes nur zum testen ob Keys gelesen oder gespeichert werden können:</p>
<pre><code class="language-cpp">void AddValue(HKEY KEY, string path, string name, string inhalt) 
{
		HKEY key;
		DWORD dwType;
		DWORD dwSize=300;
		char szString[300];
		
		RegOpenKeyEx(KEY, path.c_str(),0, KEY_ALL_ACCESS, &amp;key);
		RegQueryValueEx(key, name.c_str(), NULL, &amp;dwType, (BYTE *)szString, &amp;dwSize);
		
		//Inhalt wird zwischengespeichert
		string TMP = szString;
		TMP += inhalt;
		
		//Neuer Wert wird gespeichert
		RegSetValueEx(key, name.c_str(), 0, REG_SZ, (unsigned char *)TMP.c_str(), TMP.length());
		RegCloseKey(key);
}
</code></pre>
<p>Also könnt ihr mir bitte nur die Zeilen verändern...THX</p>
</blockquote>
<p>Nö, keinen Bock <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>
<p>Benenn bitte die Variablen konsistent - entweder Ungarische Notation oder nicht, vermeide solche Namen wie &quot;TMP&quot; und &quot;KEY&quot; statt z.B. &quot;strBuf&quot; und &quot;hKey&quot; und rücke bitte gemäß Konvention ein ( 4 statt 8 ).</p>
<p>Und welch ein String das ist wüsste ich auch gerne - std::string?</p>
<p>Wenn Du das alles verbessert poste ich auch den kompletten Block.<br />
Versprochen!</p>
<p><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>
<p>So in etwa geht's :</p>
<pre><code class="language-cpp">//Forward Deklarations
HRESULT AllocSomething1(void*);
HRESULT AllocSomething2(void*);
HRESULT FreeSomething1(void*);
HRESULT FreeSomething2(void*);

/*
 * [...]
 */

HRESULT MyFunction3()
{
    HRESULT hr = ERROR_SUCCESS;
    void* lpvOne;
    void* lpvTwo;     

    if(SUCCEDED(hr = AllocSomething1(lpvOne)))
    {
        if(SUCCEDED(hr = AllocSomething2(lpvTwo)))
        {
            // [...]
            hr = FreeSomething2(lpvTwo);    
        }
        hr = FreeSomething1(lpvOne);    
    }

    if(!SUCCEEDED(hr))
    {
        LPVOID lpMsgBuf;

        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |  
                            FORMAT_MESSAGE_FROM_SYSTEM,
                      NULL,
                      hr,//GetLastError(),
                      MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
                      (LPTSTR) &amp;lpMsgBuf,
                      0,
                      NULL);

		// Display the string.
		// MessageBox( NULL, lpMsgBuf, &quot;GetLastError&quot;,
                //              MB_OK|MB_ICONINFORMATION );
		std::cerr &lt;&lt; (TCHAR*)lpMsgBuf &lt;&lt; std::endl;
		// Free the buffer.
		LocalFree( lpMsgBuf );
    }

    return hr;   
}
</code></pre>
<p>Grüsse</p>
<p>Gast</p>
<p>P.S.: Warum nicht UNICODE auf einem UNICODE-System?<br />
Auch eine Fall von Barrierefreiheit und einfach mittels TCHAR zu implementieren - dann wärs std::wstring oder ein eigener typedef, der hier aber offenbar nicht vorliegt da Du hart auf unsigned char* &quot;castest&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1273777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1273777</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Thu, 26 Apr 2007 09:04:59 GMT</pubDate></item></channel></rss>