<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andreas Awenius' blog &#187; Uncategorized</title>
	<atom:link href="http://www.awenius.de/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.awenius.de/blog</link>
	<description>Infos zu .NET und Modellierung</description>
	<lastBuildDate>Mon, 20 Jun 2011 21:15:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Einschränkungen beim Debuggen mit mixed moded Anwendungen im 64-Bit Modus</title>
		<link>http://www.awenius.de/blog/2010/06/27/einschrankungen-beim-debuggen-mit-mixed-moded-anwendungen-im-64-bit-modus/</link>
		<comments>http://www.awenius.de/blog/2010/06/27/einschrankungen-beim-debuggen-mit-mixed-moded-anwendungen-im-64-bit-modus/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 19:57:04 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=103</guid>
		<description><![CDATA[Hallo,
kürzlich bekam ich vom Visual Studio 2010 Debugger beim Starten einer Anwendung folgende Fehlermeldung:
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
Microsoft Visual Studio
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
Fehler beim Ausführen des Projekts: Das Programm &#8220;&#8230;\unittest\bin\Debug\unittest.exe&#8221; kann nicht gestartet werden.
Das Debuggen im gemischten Modus für x64-Prozesse wird nur bei Verwendung von Microsoft .NET Framework vor Version 4 unterstützt.
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
OK   Hilfe
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
Die Konstellation war dabei folgende:

Ein reines C#-Programm referenziert eine Assembly, [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>kürzlich bekam ich vom Visual Studio 2010 Debugger beim Starten einer Anwendung folgende Fehlermeldung:</p>
<blockquote><p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Microsoft Visual Studio<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Fehler beim Ausführen des Projekts: Das Programm &#8220;&#8230;\unittest\bin\Debug\unittest.exe&#8221; kann nicht gestartet werden.</p>
<p>Das Debuggen im gemischten Modus für x64-Prozesse wird nur bei Verwendung von Microsoft .NET Framework vor Version 4 unterstützt.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
OK   Hilfe<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p></blockquote>
<p>Die Konstellation war dabei folgende:</p>
<ul>
<li>Ein reines C#-Programm referenziert eine Assembly, die mit managed C++ erstellt war. Diese Assembly bindet auch native code ein (mixed mode).</li>
<li>Als Compiler wurde der vc90 verwendet.</li>
<li>Als Targetversion für das .NET-Framework wurde für alle Komponenten 2.0 verwendet.</li>
<li>Alle Anwendungen waren als 32-Bit-Anwendungen in Visual Studio 2008 erstellt und wurden von Visual Studio 2010 zur Version 2010 konvertiert.</li>
</ul>
<p>Für die in C# erstellte (reine .NET) Anwendung war in den Einstellungen als Zielplattform &#8220;Any CPU&#8221; eingetragen, wie bereits in der Vorgängerversion:</p>
<p><img class="alignleft size-full wp-image-107" title="AnyCPU" src="http://www.awenius.de/blog/wp-content/uploads/2010/06/AnyCPU2.png" alt="AnyCPU" width="387" height="36" /></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">Nach der Umstellung auf X86 konnte die Anwendung erfolgreich im Debugger gestartet werden.</p>
<p><img class="alignleft size-full wp-image-105" title="X86" src="http://www.awenius.de/blog/wp-content/uploads/2010/06/X86.png" alt="X86" width="383" height="34" /></p>
<p>Die Fehlermeldung ist grundsätzlich ziemlich irreführend. Alle beteiligten Komponenten waren ja explizit für .NET 2.0 konfiguriert.</p>
<p>Oder ist sie gar falsch?</p>
<p>Auf <a href="http://msdn.microsoft.com/de-de/library/ms184681.aspx">dieser Seite</a> findet man folgendes Zitat:</p>
<blockquote><p><span id="xn29_db15abbc0f57576bc6cfd4a341858a19">Debugging  im gemischten Modus (Aufrufe von systemeigenem Code bis zu verwalteten  Codes, oder umgekehrt) wird für x64-Prozesse unterstützt, wenn der  verwaltete Code Microsoft .NET Framework, Version 4 oder höher,  verwendet.</span></p>
<p><span id="xn30_02695e6e38b9f206b8b6137aa93f0c7b">Debugging im gemischten Modus wird nicht für  IA64-Prozesse oder x64-Prozesse unterstützt, die frühere .NET  Framework-Versionen als 4 verwenden.</span></p></blockquote>
<p><span>was ja ein klarer Gegensatz zur oben zitieren Fehlermeldung ist.</span></p>
<p><span>Grundsätzlich ist es schon etwas unschön, wenn man für die reine .NET-Komponent nicht mehr &#8220;Any CPU&#8221; wählen kann, nur weil sie eine mixed mode Assembly nutzt, die im 32-Bit Modus erstellt wurde.</span></p>
<p><span>Eine Rolle könnte auch spielen, dass ich inzwischen Windows 7 x64 benutze, während ich zuvor Windows XP X86 verwendet habe.<br />
</span></p>
<p><span>Viele Grüße,<br />
Andreas<br />
</span></p>
<p><span><p>Technorati Tags: <a href="http://technorati.com/tag/Visual+Studio" rel="tag">Visual Studio</a>, <a href="http://technorati.com/tag/mixed+mode" rel="tag">mixed mode</a>, <a href="http://technorati.com/tag/debugging" rel="tag">debugging</a></p><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2010/06/27/einschrankungen-beim-debuggen-mit-mixed-moded-anwendungen-im-64-bit-modus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entwicklung von C++ COM-Komponenten mit Visual Studio als eingeschränkter Benutzer</title>
		<link>http://www.awenius.de/blog/2009/07/20/entwicklung-von-c-com-komponenten-mit-visual-studio-als-eingeschrankter-benutzer/</link>
		<comments>http://www.awenius.de/blog/2009/07/20/entwicklung-von-c-com-komponenten-mit-visual-studio-als-eingeschrankter-benutzer/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 06:51:55 +0000</pubDate>
		<dc:creator>Andreas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=64</guid>
		<description><![CDATA[Hallo,
es gibt eine klare Empfehlung für die tägliche Arbeit auf einem Computer mit Windows XP ein Konto mit eingeschränkten Rechten zu verwenden. Der Hauptgrund ist die damit stark reduzierte Wahrscheinlichkeit einem Virus oder anderer Malware zum Opfer zu fallen.
Für Entwickler gibt es noch einen weiteren, wesentlichen Grund für die Verwendung eines Kontos mit eingeschränkten Rechten: [...]]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>es gibt eine klare Empfehlung für die tägliche Arbeit auf einem Computer mit Windows XP ein Konto mit eingeschränkten Rechten zu verwenden. Der Hauptgrund ist die damit stark reduzierte Wahrscheinlichkeit einem Virus oder anderer <a href="http://de.wikipedia.org/wiki/Malware">Malware</a> zum Opfer zu fallen.</p>
<p>Für Entwickler gibt es noch einen weiteren, wesentlichen Grund für die Verwendung eines Kontos mit eingeschränkten Rechten: sie testen damit automatisch, ob die entwickelte Software auch mit eingeschränkten Rechten funktioniert &#8211; was gut geschriebene Software machen sollte.</p>
<p>Dummerweise bekommt man bei diesem vorbildlichen Vorgehen ein Problem, wenn man eine ATL COM Komponente erzeugt. Für diesen Projekttyp aktiviert Visual Studio die <a href="http://msdn.microsoft.com/de-de/library/024awkd1.aspx">Linker Option &#8220;Ausgabe registrieren&#8221;</a>.<br />
Damit wird nach erfolgreichem Linken der Komponente regsvr32 /s aufgerufen, um die frisch erstellte Library zu registrieren. Dieser Aufruf scheitert bei Verwendung eines Kontos mit eingeschränkten Rechten da die Registrierung von COM-Komponenten Administrator-Rechte erfordert:</p>
<p><code><br />
Project : error PRJ0050: Fehler beim Registrieren der Ausgabe. Vergewissern Sie sich, dass Sie über die entsprechenden Berechtigungen zum Ändern der Registrierung verfügen.<br />
</code></p>
<p>Für solche Fälle ist die Verwendung des Kommandos <a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/runas.mspx?mfr=true">runas</a> eine naheliegende Option aber leider hat man auf die von Visual Studio erzeugte Programmzeile für den Aufruf von regsvr32 keinen Einfluss, diese ist nämlich Teil der <a href="http://msdn.microsoft.com/de-de/library/microsoft.visualstudio.vcprojectengine.vclinkertool.registeroutput.aspx">Visual Studio Programmierschnittstelle</a> und damit nicht direkt zugänglich.</p>
<p>Eine einfache Lösung besteht darin, die oben genannte Linker-Option &#8220;Ausgabe registrieren&#8221; zu deaktivieren und ein eigenes &#8220;Postbuildereigenis&#8221; für das Projekt zu definieren. Dieses könnte z.B. so aussehen:</p>
<p><code><br />
runas /user:administrator /savecred "regsvr32 /s $(TargetPath)"<br />
</code></p>
<p>Damit das funktioniert muss man einmal den Befehl in einem Kommandofenster eingeben und dann nach der Aufforderung das Administrator-Password eingeben. Bei jedem weiteren Aufruf mit /savecred wird dann das zuletzt verwendete Passwort automatisch verwendet. Damit ist vermieden, dass das Administrator-Password im Klartext in einer Visual Studio Projektdatei steht, was eine erhebliche Sicherheitslücke darstellen würde.</p>
<p>Falls man das gemerkte Passwort später wieder löschen möchte: Systemsteuerung/Benutzerkonten/Eigene Netzwerkkennwörter verwalten.</p>
<p>Viele Grüße,<br />
Andreas</p>
<p>Technorati Tags: <a href="http://technorati.com/tag/Visual+Studio" rel="tag">Visual Studio</a>, <a href="http://technorati.com/tag/COM" rel="tag"> COM</a>, <a href="http://technorati.com/tag/ATL" rel="tag"> ATL</a>, <a href="http://technorati.com/tag/Registry" rel="tag">Registry</a>, <a href="http://technorati.com/tag/Eingeschr%C3%A4nkter+Benutzer" rel="tag">Eingeschränkter Benutzer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2009/07/20/entwicklung-von-c-com-komponenten-mit-visual-studio-als-eingeschrankter-benutzer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Über mich</title>
		<link>http://www.awenius.de/blog/2008/01/25/hello-world/</link>
		<comments>http://www.awenius.de/blog/2008/01/25/hello-world/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 15:08:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.awenius.de/blog/?p=1</guid>
		<description><![CDATA[Guten Tag!
Meine Name ist Andreas Awenius.  Ich bin selbständiger Berater für Softwareentwicklung in den Bereichen, Microsoft Windows, .NET, C++, UML und Unix. Auf meiner Homepage können Sie sich weiter über mich informieren.
Auf diesem blog werde ich in loser Folge über verschiedene technische Aspekte und sonstige interessante Entwicklungen im Bereich der Softwareentwicklung schreiben. Über Kommentare [...]]]></description>
			<content:encoded><![CDATA[<p>Guten Tag!</p>
<p>Meine Name ist Andreas Awenius.  Ich bin selbständiger Berater für Softwareentwicklung in den Bereichen, Microsoft Windows, .NET, C++, UML und Unix. Auf meiner <a href="http://www.awenius.de">Homepage </a>können Sie sich weiter über mich informieren.</p>
<p>Auf diesem blog werde ich in loser Folge über verschiedene technische Aspekte und sonstige interessante Entwicklungen im Bereich der Softwareentwicklung schreiben. Über Kommentare und Fragen freue ich mich immer.</p>
<p>Viele Grüße,<br />
Andreas</p>
]]></content:encoded>
			<wfw:commentRss>http://www.awenius.de/blog/2008/01/25/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

