<?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[NamedPipes unter Vista (Austausch zwischen Elevated und normal)]]></title><description><![CDATA[<p>Hi Leute :),</p>
<p>ich möchte unter Vista Informationen von einem Programm mit Standard-Rechten an eines mit Admin-Rechten senden. Fenster-Nachrichten fallen da weg, da das OS die direkt ausfiltert. Also dachte ich mir, dass eine Named Pipe sinnvoll ist.</p>
<p>Ich erstelle sie (im Admin-Programm) wie folgt:</p>
<pre><code class="language-cpp">SECURITY_DESCRIPTOR securityDesc;
if(!InitializeSecurityDescriptor(&amp;securityDesc, SECURITY_DESCRIPTOR_REVISION))
	return false;
if(!SetSecurityDescriptorDacl(&amp;securityDesc, false, NULL, false))
	return false;
if(!SetSecurityDescriptorSacl(&amp;securityDesc, false, NULL, false))
	return false;

SECURITY_ATTRIBUTES securityAttributes;
securityAttributes.nLength = sizeof(securityAttributes);
securityAttributes.lpSecurityDescriptor = &amp;securityDesc;
securityAttributes.bInheritHandle = false;

msgListenerPipe = CreateNamedPipe(pipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_NOWAIT, 1, 4096, 4096, 5000, &amp;securityAttributes);
</code></pre>
<p>Das funktioniert auch perfekt. Jetzt möchte ich mich von dem Programm mit Standard-Rechten aus connecten:</p>
<pre><code class="language-cpp">CallNamedPipe(pipeName, &amp;data, 4, out, 0, &amp;written, NMPWAIT_NOWAIT);
</code></pre>
<p>Dies schlägt fehl und GetLastError liefert mir 5 (ERROR_ACCESS_DENIED).</p>
<p>Wo liegt mein Fehler?</p>
<p>Vielen Dank schon mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Greetz!<br />
M.T.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209272/namedpipes-unter-vista-austausch-zwischen-elevated-und-normal</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 13:37:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209272.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Mar 2008 14:02:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to NamedPipes unter Vista (Austausch zwischen Elevated und normal) on Fri, 28 Mar 2008 14:02:17 GMT]]></title><description><![CDATA[<p>Hi Leute :),</p>
<p>ich möchte unter Vista Informationen von einem Programm mit Standard-Rechten an eines mit Admin-Rechten senden. Fenster-Nachrichten fallen da weg, da das OS die direkt ausfiltert. Also dachte ich mir, dass eine Named Pipe sinnvoll ist.</p>
<p>Ich erstelle sie (im Admin-Programm) wie folgt:</p>
<pre><code class="language-cpp">SECURITY_DESCRIPTOR securityDesc;
if(!InitializeSecurityDescriptor(&amp;securityDesc, SECURITY_DESCRIPTOR_REVISION))
	return false;
if(!SetSecurityDescriptorDacl(&amp;securityDesc, false, NULL, false))
	return false;
if(!SetSecurityDescriptorSacl(&amp;securityDesc, false, NULL, false))
	return false;

SECURITY_ATTRIBUTES securityAttributes;
securityAttributes.nLength = sizeof(securityAttributes);
securityAttributes.lpSecurityDescriptor = &amp;securityDesc;
securityAttributes.bInheritHandle = false;

msgListenerPipe = CreateNamedPipe(pipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_NOWAIT, 1, 4096, 4096, 5000, &amp;securityAttributes);
</code></pre>
<p>Das funktioniert auch perfekt. Jetzt möchte ich mich von dem Programm mit Standard-Rechten aus connecten:</p>
<pre><code class="language-cpp">CallNamedPipe(pipeName, &amp;data, 4, out, 0, &amp;written, NMPWAIT_NOWAIT);
</code></pre>
<p>Dies schlägt fehl und GetLastError liefert mir 5 (ERROR_ACCESS_DENIED).</p>
<p>Wo liegt mein Fehler?</p>
<p>Vielen Dank schon mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Greetz!<br />
M.T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482166</guid><dc:creator><![CDATA[Manuel]]></dc:creator><pubDate>Fri, 28 Mar 2008 14:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to NamedPipes unter Vista (Austausch zwischen Elevated und normal) on Fri, 28 Mar 2008 14:36:50 GMT]]></title><description><![CDATA[<p>Du kannst auch via Messages kommunizieren. Du musst nur für die Message eine Ausnahme definieren:<br />
ChangeWindowMessageFilter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482196</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 28 Mar 2008 14:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to NamedPipes unter Vista (Austausch zwischen Elevated und normal) on Fri, 28 Mar 2008 16:13:05 GMT]]></title><description><![CDATA[<p>Genial. Danke Jochen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Schönes Wochenende!<br />
M.T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482277</guid><dc:creator><![CDATA[Manuel]]></dc:creator><pubDate>Fri, 28 Mar 2008 16:13:05 GMT</pubDate></item><item><title><![CDATA[Reply to NamedPipes unter Vista (Austausch zwischen Elevated und normal) on Fri, 28 Mar 2008 17:17:01 GMT]]></title><description><![CDATA[<p>Named Pipes sind kein Problem!<br />
Siehe auch:<br />
<a href="http://blog.m-ri.de/index.php/2007/02/21/uac-und-createnamedpipe-mit-lpsecurityattributesnull/" rel="nofollow">http://blog.m-ri.de/index.php/2007/02/21/uac-und-createnamedpipe-mit-lpsecurityattributesnull/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482327</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 28 Mar 2008 17:17:01 GMT</pubDate></item><item><title><![CDATA[Reply to NamedPipes unter Vista (Austausch zwischen Elevated und normal) on Fri, 28 Mar 2008 17:40:49 GMT]]></title><description><![CDATA[<p>Macht er doch, oder? Deshalb sollte es ja auch gehen... oder wie müsste die DACL hier genau aussehen? Everyone?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482337</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 28 Mar 2008 17:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to NamedPipes unter Vista (Austausch zwischen Elevated und normal) on Fri, 28 Mar 2008 18:45:46 GMT]]></title><description><![CDATA[<p>Stimmt macht er richtig! Allerdings die SACL braucht er nicht.</p>
<p>Folgender Code erzeugt bei mir eine named Pipe in einem Service, mit Rechten auf Everyone und erlaubt Zugriff damit auch von nicht elevated Programmen.</p>
<pre><code class="language-cpp">// Get an empty DACL to allow everyone to connect. A NULL DACL allows
	// only Admins a full connect. Other users can only read.
	SECURITY_DESCRIPTOR sd; 
	if (!::InitializeSecurityDescriptor(&amp;sd, SECURITY_DESCRIPTOR_REVISION)) 
	{
		TRACE_LAST_ERROR(_T(&quot;InitializeSecurityDescriptor failed&quot;));
		return false;
	}

	// Allow access to really everyone!
	if (!::SetSecurityDescriptorDacl(&amp;sd, TRUE, NULL, FALSE)) 
	{
		TRACE_LAST_ERROR(_T(&quot;SetSecurityDescriptorDacl failed&quot;));
		return false;
	}

	SECURITY_ATTRIBUTES sa; 
	sa.nLength = sizeof(SECURITY_ATTRIBUTES); 
	sa.lpSecurityDescriptor = static_cast&lt;PVOID&gt;(&amp;sd); 
	sa.bInheritHandle = false; 

	// Create the pipe from the server side
	m_hPipe = ::CreateNamedPipe(PIPENAME, 
								PIPE_ACCESS_DUPLEX |
								FILE_FLAG_OVERLAPPED,    // overlapped mode 
								PIPE_TYPE_MESSAGE|PIPE_WAIT,
								1,			// 1 instance
								4096, 4096, // buffer sizes for I/O
								1,			// default timeout
								&amp;sa);
	TRACE_LAST_ERROR_IF(m_hPipe==INVALID_HANDLE_VALUE,_T(&quot;CreateNamedPipe failed&quot;));
	return m_hPipe!=INVALID_HANDLE_VALUE;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1482374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482374</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 28 Mar 2008 18:45:46 GMT</pubDate></item><item><title><![CDATA[Reply to NamedPipes unter Vista (Austausch zwischen Elevated und normal) on Fri, 28 Mar 2008 19:31:04 GMT]]></title><description><![CDATA[<p>Stimmt. So funktionierts. Mein Fehler war der 2. Parameter bei SetSecurityDescriptorDacl. War mir nicht im Klaren darüber dass ein DACL von InitializeSecurityDescriptor standardmäßig gesetzt wird.</p>
<p>Werds aber dennoch mit Window-Messages machen. Das mit den Ausnahmen war mir neu. Seit Vista ist echt eine Menge an neuen Funktionen dazu gekommen ... ^^</p>
<p>Danke euch beiden für die Mühe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Greetz<br />
M.T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482387</guid><dc:creator><![CDATA[Manuel]]></dc:creator><pubDate>Fri, 28 Mar 2008 19:31:04 GMT</pubDate></item></channel></rss>