<?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>Horti&#039;s Blog &#187; Artikel / HowTo&#8217;s</title>
	<atom:link href="http://rasehorn.net/blog/category/artikel/feed/" rel="self" type="application/rss+xml" />
	<link>http://rasehorn.net/blog</link>
	<description></description>
	<lastBuildDate>Tue, 02 Mar 2010 23:14:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Kleiner Tip: serielle Schnittstelle geht über RDP</title>
		<link>http://rasehorn.net/blog/2009/06/serialport-uber-rdp/</link>
		<comments>http://rasehorn.net/blog/2009/06/serialport-uber-rdp/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 18:22:02 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Artikel / HowTo's]]></category>
		<category><![CDATA[RDP]]></category>
		<category><![CDATA[SerialPort]]></category>

		<guid isPermaLink="false">http://rasehorn.net/blog/?p=404</guid>
		<description><![CDATA[Ich wollte gestern via SerialPort-Klasse ein Messgerät ansteuern über die serielle Schnittstelle. Das ist relativ einfach wenn man das Gerät mitnehmen und an seinen Rechner anschließen kann. Das ging aber in meinem Fall nicht.
Die hässliche Alternative wäre gewesen auf dem Rechner wo das Gerät angeschlossen ist ein VisualStudio zu installieren bzw. vor Ort ein Laptop dafür zu [...]]]></description>
			<content:encoded><![CDATA[<p>Ich wollte gestern via SerialPort-Klasse ein Messgerät ansteuern über die serielle Schnittstelle. Das ist relativ einfach wenn man das Gerät mitnehmen und an seinen Rechner anschließen kann. Das ging aber in meinem Fall nicht.</p>
<p>Die hässliche Alternative wäre gewesen auf dem Rechner wo das Gerät angeschlossen ist ein VisualStudio zu installieren bzw. vor Ort ein Laptop dafür zu benutzen. Eine elegantere Lösung war aber einfach sich via RDP auf den Entwicklungsrechner zu verbinden und die seriellen Schnittstellen einfach durchzureichen. Wo man das einstellen kann sieht man auf dem Bild.</p>
<p><img class="alignnone size-full wp-image-408" title="rdp_serialport1" src="http://rasehorn.net/blog/wp-content/uploads/2009/06/rdp_serialport1.png" alt="rdp_serialport1" width="514" height="464" /></p>
<p>Auf dem entfernten Rechner kann man diese COM-Ports aber nicht im Gerätemanager erkennen, d.h. man muss &#8220;wissen&#8221; wo man suchen muss. Mit der GetPortNames-Methode aus der SerialPort-Klasse kann man sich aber alle vorhandenen Ports anzeigen lassen.</p>
<p>Auf jeden Fall hat die Aktion prima geklappt, das hatte ich nicht erwartet <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rasehorn.net/blog/2009/06/serialport-uber-rdp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ClickOnce und OracleClient&#8230;</title>
		<link>http://rasehorn.net/blog/2009/05/clickonce-und-oracleclient/</link>
		<comments>http://rasehorn.net/blog/2009/05/clickonce-und-oracleclient/#comments</comments>
		<pubDate>Wed, 13 May 2009 21:58:40 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Artikel / HowTo's]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ClickOnce]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://rasehorn.net/blog/?p=386</guid>
		<description><![CDATA[&#8230; sind Dinge, mit denen ich mich derzeit auf der Arbeit rumschlage. 
Ich entwickle derzeit eine Client-Anwendung für interne Zwecke, welche auf ca. 10 Rechnern laufen soll. Damit man diese nun nicht alle aufwendig manuell installieren bzw. später updaten muss habe ich mich für ClickOnce als Deployment-Lösung entschieden. Ich habe damit bereits gute Erfahrungen bei  [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; sind Dinge, mit denen ich mich derzeit auf der Arbeit rumschlage. <img class="size-full wp-image-393 alignright" title="1" src="http://rasehorn.net/blog/wp-content/uploads/2009/05/1.png" alt="1" width="228" height="207" /></p>
<p>Ich entwickle derzeit eine Client-Anwendung für interne Zwecke, welche auf ca. 10 Rechnern laufen soll. Damit man diese nun nicht alle aufwendig manuell installieren bzw. später updaten muss habe ich mich für <a href="http://de.wikipedia.org/wiki/ClickOnce">ClickOnce</a> als Deployment-Lösung entschieden. Ich habe damit bereits gute Erfahrungen bei  einer anderen Anwendung gemacht, die ich regelmäßig anpasse und neu verteile.</p>
<p>Diese neue Anwendung soll nun allerdings im Gegensatz zur vorherigen mit einer Datenbank kommunizieren, und zwar genauer gesagt mit einer Oracle 10g.</p>
<p>Gesagt, getan: Als erstes verweise ich in meiner Anwendung auf den Namensraum &#8220;System.Data.OracleClient&#8221;. Beim Start der Anwendung bekomme ich allerdings gleich beim ersten Verbindungsversuch folgende Meldung zu sehen:</p>
<p>Will man nun sein Programm starten stößt man beim Verbindungsaufbau auf den nächsten Fehler.<img class="size-full wp-image-395 alignleft" title="2" src="http://rasehorn.net/blog/wp-content/uploads/2009/05/2.png" alt="2" width="418" height="117" /> Im Gegensatz zu den meisten anderen  Datenbanken erfordern Oracle Datenbanken leider die Oracle eigene Clientsoftware, denn der System.Data.OracleClient macht nichts weiter als mit genau diesem Client zu kommunizieren.</p>
<p><img class="alignright size-full wp-image-396" title="3" src="http://rasehorn.net/blog/wp-content/uploads/2009/05/3.png" alt="3" width="255" height="411" /></p>
<p>Nun muss man sich den zu seiner Datenbank-Version passenden OracleClient runterladen und installieren. Hat man dies ordnungsgemäß getan sollte man seine Anwendung auch starten können. Das ist für mich allerdings nur eine suboptimale Lösung, denn ich will ja mein Programm via ClickOnce ausrollen und keine separate manuelle Installation des OracleClients auf jedem Rechner vornehmen. Man könnte das ausrollen des Clients via Software-Verteilung vornehmen (wenn man eine hat), aber es gibt noch eine viel elegantere Lösung.</p>
<p>Um jetzt den ClickOnce Vorteil zu behalten müssen wir also die Clientsoftware in unsere Software &#8220;Veröffentlichung&#8221; (Publish) mit einbeziehen. Das geht leichter als man denkt, denn das ganze Geheimnis der Oracle-Clientsoftware sind lediglich 4 Dateien, welche man einfach nur in sein Projekt aufnehmen braucht.</p>
<p><img class="alignleft size-full wp-image-397" title="4" src="http://rasehorn.net/blog/wp-content/uploads/2009/05/4.png" alt="4" width="283" height="200" /></p>
<p>Die werden allerdings nicht als Verweis hinzugefügt, sondern einfach als normaler Content ins Projekt gezogen.</p>
<p>Sie müssen hier unbedingt im Root des Projektes liegen und beim Build mit ins Ausgabeverzeichnis kopiert werden (Eigenschaften), weil sie von der Anwendung beim Start im selbigen Ordner gesucht werden wie die Anwendungs-EXE.<img class="alignright size-full wp-image-398" title="5" src="http://rasehorn.net/blog/wp-content/uploads/2009/05/5.png" alt="5" width="499" height="168" /></p>
<p>Als nächstes gilt es noch, falls nicht bereits automatisch geschehen, diese Dateien zu markieren, damit sie beim Publish mit verteilt werden.(Settings=&gt;Publish)</p>
<p>Bei der Auswahl der Oracle-Clientsoftware gilt es übrigens zu beachten die 4 Dateien aus dem sogenannten &#8220;BASIC&#8221; Paket zu nehmen und nicht die aus dem &#8220;BASIC LITE&#8221;. Die &#8220;LITE&#8221;-Versionen verursachten folgenden Fehler:</p>
<p><img class="size-full wp-image-390 alignright" title="instant_client_basic_lite_fehler" src="http://rasehorn.net/blog/wp-content/uploads/2009/05/instant_client_basic_lite_fehler.png" alt="instant_client_basic_lite_fehler" width="561" height="85" /></p>
<p>Nach dem nächsten Publish sollte die Anwendung dann startbar sein. War leicht oder? Nagut, einen kleinen Wermutstropfen gibt es natürlich noch. Eine der vier ominösen DLLs ist schlappe 104 MB groß, d.h. das Publish-Paket ist nun nicht mehr das kleinste, was allerdings bei uns im LAN keine Rolle spielt.</p>
<p>In diesem Zusammenhang war <a href="http://www.thewayofcoding.com/2008/02/c-net-programming-tip-connecting-to-an-oracle-database" target="_blank">dieser Beitrag</a> sehr hilfreich und sei hiermit auch sehr zu empfehlen.</p>
<p>Ach übrigens: Der GAC befindet sich in Windows XP unter &#8220;C:\Windows\Assembly&#8221; und die &#8220;gacutil.exe&#8221; ist unter &#8220;C:\Programme\Microsoft Visual Studio 8\SDK\v2.0\Bin\&#8221;.</p>
<p>In diesem Sinne, happy coding <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rasehorn.net/blog/2009/05/clickonce-und-oracleclient/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[HowTo] C# Code-Listings mit Syntax-Highlighting in Latex</title>
		<link>http://rasehorn.net/blog/2007/06/latex-code-listings-mit-syntax-highlighting-in-c/</link>
		<comments>http://rasehorn.net/blog/2007/06/latex-code-listings-mit-syntax-highlighting-in-c/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 06:43:04 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Artikel / HowTo's]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Latex]]></category>

		<guid isPermaLink="false">http://blog.rasehorn.net/?p=95</guid>
		<description><![CDATA[Ich schreibe derzeit an meiner Diplomarbeit mit Latex, genauer gesagt mit Lyx1.4.4 als WISIWYM-Editor und Miktex 2.5 Basic als Latex Unterbau. Mittlerweile gibts schon Lyx 1.5, was deutlich schicker ist als 1.4.x, aber da es das bisher nur als Beta gibt und ich fertig werden will/muss hab ich auf ein Upgrade verzichtet. Never touch a [...]]]></description>
			<content:encoded><![CDATA[<p>Ich schreibe derzeit an meiner Diplomarbeit mit Latex, genauer gesagt mit Lyx1.4.4 als WISIWYM-Editor und Miktex 2.5 Basic als Latex Unterbau. Mittlerweile gibts schon Lyx 1.5, was deutlich schicker ist als 1.4.x, aber da es das bisher nur als Beta gibt und ich fertig werden will/muss hab ich auf ein Upgrade verzichtet. Never touch a running system <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Ich habe relativ viele Code-Listings in meiner Arbeit, die man aus optischen Gründen NICHT als Screenshots integrieren sollte. Ich habs versucht, aber es sieht aufgrund der teilweise unterschiedlichen Größen der Bilder und deren Qualität einfach nicht aus. Nach einigem Recherchieren und etwas Hilfe durch Micha kam ich dann zu einer halbwegs schicken Lösung.</p>
<p>Um ein Listing zu erstellen geht man in Lyx zur gewünschten Stelle im Dokument und dann zu [INSERT &gt;&gt;&gt; Tex Code] bzw. man drückt Strg+L. In diesen Tex Code Block lässt man dann folgenden Code ein:</p>
<p>begin{lstlisting}</p>
<p>//Euer Quellcode</p>
<p>\end{lstlisting}</p>
<p>Kleiner Tip, vermeidet Unterstriche in der Caption, da meckert Lyx rum. Ich habe Stunden gebraucht bis ich das rausgefunden hatte, da Lyx mit Fehlergründen manchmal etwas zurückhaltend ist&#8230;</p>
<p>Damit das ganze überhaupt läuft muss aber etwas Vorarbeit geleistet werden. Um Listings zu integrieren benötigt man vorallem eins, das Latex-Paket &#8220;Listings&#8221;, wer hätte das gedacht <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Also schreibt man in die Preambel, a.k.a. der Latex-Vorspann, folgenden Code:</p>
<p>%Quellcode-Listing Einstellungen</p>
<p>\usepackage{color,listings} %bindet das Paket Listings ein</p>
<p>% Der lstset-Befehl ermöglicht haufenweise Einstellungen zur Formatierung</p>
<p>\lstset{language=[Sharp]C, % Grundsprache ist C und Dialekt ist Sharp (C#)<br />
captionpos=b, % Beschriftung ist unterhalb</p>
<p>frame=lines, % Oberhalb und unterhalb des Listings ist eine Linie</p>
<p>basicstyle=\ttfamily, % Schriftart<br />
keywordstyle=\color{blue}, % Farbe für die Keywords wie public, void, object u.s.w.</p>
<p>commentstyle=\color{green}, % Farbe der Kommentare<br />
stringstyle=\color{red}, % Farbe der Zeichenketten</p>
<p>numbers=left, % Zeilennummern links vom Code</p>
<p>numberstyle=\tiny, % kleine Zeilennummern</p>
<p>numbersep=5pt,<br />
breaklines=true, % Wordwrap a.k.a. Zeilenumbruch aktiviert</p>
<p>showstringspaces=false,</p>
<p>% emph legt Farben für bestimmte Wörter manuell fest</p>
<p>emph={double,bool,int,unsigned,char,true,false,void},</p>
<p>emphstyle=\color{blue},</p>
<p>emph={Assert,Test},</p>
<p>emphstyle=\color{red},</p>
<p>emph={[2]\using,\#define,\#ifdef,\#endif}, emphstyle={[2]\color{blue}}<br />
}</p>
<p>Falls ihr den Absatz kopieren wollt, dann vergesst nicht die Leerzeichen und Kommentare innerhalb des lstset-Befehls zu entfernen, sonst meckert Lyx.</p>
<p>Wenn man Listings benutzt, will man diese meistens auch am Ende seiner Arbeit, ähnlich dem Abbildungsverzeichnis, aufführen. Also einfach an gewünschter Stelle im Dokument [Strg+L] drücken und folgenden Code einfügen:</p>
<p>\renewcommand{\lstlistlistingname}{Auflistungen}<br />
\lstlistoflistings</p>
<p>Damit hat man ein schönes Verzeichnis seiner Listings mit Seitenangabe im Dokument und es heisst so wie man es haben will, in meinem Fall eben &#8220;Auflistungen&#8221;.</p>
<p>Das Preambel-Beispiel erhebt keinen Anspruch auf Vollständigkeit und ist auch noch nicht optimal, aber ich denke es ist ein guter Anfang für alle die damit arbeiten wollen. Ich kanns nur empfehlen <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rasehorn.net/blog/2007/06/latex-code-listings-mit-syntax-highlighting-in-c/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>[Tip] NHibernate und CastleProject[ActiveRecord]</title>
		<link>http://rasehorn.net/blog/2007/03/nhibernate-castleprojectactiverecord-1337/</link>
		<comments>http://rasehorn.net/blog/2007/03/nhibernate-castleprojectactiverecord-1337/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 16:34:52 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Artikel / HowTo's]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blog.rasehorn.net/?p=83</guid>
		<description><![CDATA[Es gab bisher eine Sache die mich davon abgehalten hat (N)Hibernate zu benutzen, unzwar das aufwendige XML-Mapping. Aber wie ich jetzt gelesen habe braucht man das nicht mehr, denn es gibt das sogenannte CastleProject mit seinem wunderbaren Unterprojekt ActiveRecord. Dieses erlaubt es direkt in meinen Geschäftsobjekten die Properties mit Attributen zu versehen wie zum Beispiel:

[Property("Name")]
public [...]]]></description>
			<content:encoded><![CDATA[<p>Es gab bisher eine Sache die mich davon abgehalten hat (N)Hibernate zu benutzen, unzwar das aufwendige XML-Mapping. Aber wie ich jetzt gelesen habe braucht man das nicht mehr, denn es gibt das sogenannte <a title="Castleproject" href="http://castleproject.org" target="_blank">CastleProject</a> mit seinem wunderbaren Unterprojekt <a href="http://castleproject.org/activerecord" target="_blank">ActiveRecord</a>. Dieses erlaubt es direkt in meinen Geschäftsobjekten die Properties mit Attributen zu versehen wie zum Beispiel:</p>
<p><code></code></code></p>
<p>[Property("Name")]<br />
public string Name<br />
{<br />
get { return _name; }<br />
set { _name = value;}<br />
}</p>
<p>Damit weiss Hibernate das es das Property Name auf die selbige Spalte in der Datenbanktabelle mappen muss und fertig. Genial, kein aufwendiges XML-Mapping mehr, das wars worauf ich gewartet habe <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Zum probieren einfach mal den "Getting Started" Guide ausprobieren, ist recht informativ.</p>
<p>Noch ein Tip zur Demo-Anwendung:</p>
<p>Ich hatte einige Probleme die zum laufen zu bewegen. Die Demo will standardmäßig die 3 Tabellen selbst anlegen, was bei den ersten beiden auch funktioniert hat. Nur die 3. Tabelle "User" musste ich von Hand erstellen, weil es da ein Syntax Fehler gab in der Mysql-Anfrage.</p>
<p>Da ich keinen MS-SQL2000 Server habe wollte ich MySQL 4.x benutzen, was aber erst nicht ging, da er mir immer einen Syntaxfehler brachte sobald die Anwendung eine Anfrage an die DB absenden wollte. Ich hatte es zunächst auf den etwas veralteten "Mysql/.Net Connector" geschoben (1.0.7) und mir den neuen (5.0) runtergeladen mit welchem ich aber nicht mal eine Verbindung hinbekam. Wieder mit dem alten Connector und nach mehreren Stunden rumprobieren habe ich dann festgestellt das man an das Attribut für die Klassen noch den optionalen Parameter "Tabellenname" anhängen muss, der in der Demo nicht benutzt wurde. Siehe hier:</p>
<p><code></code></p>
<p>vorher:</p>
<p>[ActiveRecord]<br />
public class Blog : ActiveRecordBase</p>
<p>nachher:</p>
<p>[ActiveRecord("blog")]<br />
public class Blog : ActiveRecordBase</p>
<p>Nachdem ich dann bei allen 3 Klassen den Tabellenname-Parameter angegeben hatte ging es sofort. Der alte Connector geht übrigens auch mit MySQL5.</p>
<p>Viel Spass beim stricken <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>P.S. Das Syntax-Highlighting Plugin hier ist auch nicht so das wahre, kennt da jemand ein besseres?</p>
]]></content:encoded>
			<wfw:commentRss>http://rasehorn.net/blog/2007/03/nhibernate-castleprojectactiverecord-1337/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Tip] Text einer MessageBox kopieren</title>
		<link>http://rasehorn.net/blog/2006/12/ich-wurde-erleuchtet/</link>
		<comments>http://rasehorn.net/blog/2006/12/ich-wurde-erleuchtet/#comments</comments>
		<pubDate>Sat, 16 Dec 2006 16:10:04 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Artikel / HowTo's]]></category>

		<guid isPermaLink="false">http://blog.rasehorn.net/?p=68</guid>
		<description><![CDATA[Auch auf die Gefahr hin das ihr das alle schon wusstet sage ich es trotzdem weil ich das so genial finde.
Ihr habt euch doch sicherlich auch schon tausendmal darüber geärgert das man den Text einer MessageBox wie dieser hier

entweder abschreiben oder &#8220;screenshot&#8221;en muss um ihn an jemand anders weiterzureichen. Wenn ihr das Leid seit, dann [...]]]></description>
			<content:encoded><![CDATA[<p>Auch auf die Gefahr hin das ihr das alle schon wusstet sage ich es trotzdem weil ich das so genial finde.<br />
Ihr habt euch doch sicherlich auch schon tausendmal darüber geärgert das man den Text einer MessageBox wie dieser hier<br />
<img title="MessageBox and Control+C" src="http://blog.rasehorn.net/horti/beitraege/MessageBoxControlC.png" alt="MessageBox and Control+C" align="bottom" /></p>
<p>entweder abschreiben oder &#8220;screenshot&#8221;en muss um ihn an jemand anders weiterzureichen. Wenn ihr das Leid seit, dann drückt doch einfach mal das berühmte Ctrl+C auf eurer Tastatur wenn die Box im Focus ist und ihr findet danach folgendes im Zwischenspeicher:</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Ein Fehler ist aufgetreten<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Die Methode oder der Vorgang sind nicht implementiert.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
OK<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Na wie geil is das denn?<br />
Ich bin natürlich nicht allein darauf gekommen, sondern gelesen, unzwar das <a title="ein Blog" href="http://www.thejoyofcode.com/Copying_from_Message_Boxes.aspx" target="_blank">hier.</a></p>
<p>In diesem Sinne, Frohe Weihnachten <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rasehorn.net/blog/2006/12/ich-wurde-erleuchtet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Tutorial] .NET Programme vom Netzlaufwerk starten</title>
		<link>http://rasehorn.net/blog/2006/03/net-programme-vom-netzlaufwerk-starten/</link>
		<comments>http://rasehorn.net/blog/2006/03/net-programme-vom-netzlaufwerk-starten/#comments</comments>
		<pubDate>Fri, 17 Mar 2006 23:26:43 +0000</pubDate>
		<dc:creator>Marcus</dc:creator>
				<category><![CDATA[Artikel / HowTo's]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.rasehorn.net/?p=44</guid>
		<description><![CDATA[Endlich, mein erster .NET Beitrag ist fertig.
UPDATE
 Hier findet ihr noch einen sehr guten Artikel zu diesem Thema, unbedingt lesen! 
Also ich hatte da neulich das Problem das ich ein C#-Programm für mehrere Personen im Netzwerk zugänglich machen wollte OHNE es überall installieren zu wollen/müssen. Das ist aber bei .NET so eine Sache, denn die [...]]]></description>
			<content:encoded><![CDATA[<p>Endlich, mein erster .NET Beitrag ist fertig.</p>
<p><strong>UPDATE</strong><br />
<a href="http://home.hot.rr.com/graye/Articles/CodeAccessSecurity.htm" target="_blank"> Hier findet ihr noch einen sehr guten Artikel zu diesem Thema, unbedingt lesen! </a></p>
<p>Also ich hatte da neulich das Problem das ich ein C#-Programm für mehrere Personen im Netzwerk zugänglich machen wollte OHNE es überall installieren zu wollen/müssen. Das ist aber bei .NET so eine Sache, denn die CAS (Code Acess Security) ist da recht restriktiv was IO-Operationen über das Netzwerk angeht und deshalb gabs beim Starten auf dem entfernten Rechner erstmal eine nette SecurityException als Antwort. Gut, also was tun. Man muss nun auf jedem Rechner der das Programm starten können soll die Laufzeit-Sicherheits-Richtlinie so modifizieren das er der Assembly vertraut. Das ist relativ einfach und soll auf den folgenden Bildern gezeigt werden.</p>
<p>Erstmal begibt man sich in die Systemsteuerung und dort dann in die Verwaltung. Hier sieht man nun die sogenannte .NET Konfiguration für alle installierten Versionen des Frameworks. Beim 1.1er war dieser Menüpunkt immer vorhanden, aber seit dem 2.0er gilt das nur noch wenn man die SDK installiert hat. Stellt sich nun die Frage: Wie komme ich beim 2.0er dahin? Muss ich nun auf jedem Rechner die SDK installieren? Antwort: NEIN, aber dazu später mehr. Erstmal zeige ich wie man es zu Fuß macht.</p>
<p><img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/Verwaltung.png" alt="Verwaltung" /></p>
<p><span id="more-22"></span>Die 2.0er Konfiguration unterscheidet sich optisch kein Stück von der 1.1er. Dort angekommen gehen wir zum Menüpunkt Machine &gt;&gt;&gt; CodeGroups &gt;&gt;&gt; All Code runter und sehen verschiedenste Rechtegruppen. Man könnte jetzt anfangen die vorhandenen zu editieren und anzupassen, oder man macht einfach seine eigene auf, wie in meinem Fall. Also Rechte Maustaste auf ALL CODE und dann NEW&#8230;</p>
<p><img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/CodeGroups.png" alt="Verwaltung" /></p>
<p>Nun legt man einen beliebigen Namen fest und wer es hart mag der gibt auch noch eine Beschreibung an <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/NameDerGruppeFestlegen.png" alt="Verwaltung" /></p>
<p>Als nächstes wählt man die Bedingungen / Beweise unter der das Vertrauen der Assembly stattfinden soll. In meinem Fall soll eine bestimmt URL freigegeben werden für den Zugriff. HASH wäre zum Beispiel der Hashwert der Assembly der als Beweis gilt oder Publisher wenn man nur einer vom Ersteller signierten Assembly vertrauen will.<br />
<img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/ArtDerGruppe.png" alt="Verwaltung" /></p>
<p>Nun muss der Pfad der URL spezifiziert werden. In meinem Fall will ich die Windowsfreigabe &#8220;testing&#8221; und alles was sich darin befindet auf dem Rechner mit der angegebenen IP als vertrauenswürdig deklarieren.<br />
<img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/URLFreigeben.png" alt="Verwaltung" /></p>
<p>Jetzt muss nur noch der Grad des Vertrauens festgelegt werden, soll heissen welche Rechte möchte ich genau vergeben. In meinem Fall habe ich alle Rechte vergeben, sprich FULL TRUST.<br />
<img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/RechteSatzWaehlen.png" alt="Verwaltung" /></p>
<p>Hat man danach bestätigt sieht man nun die eben erstellte neue Gruppe unter ALL CODE.<br />
<img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/FertigGruppeErstellt.png" alt="Verwaltung" /></p>
<p>Das ist ja alles schön und gut, aber was mach ich nun mit den Rechnern auf denen die SDk nicht installiert ist. Ausserdem wäre das ganz schön umständlich das so bei allen einzustellen. Um das zu vereinfachen kann man sich nun aus der eben festgelegten Regel ein sogenanntes &#8220;Weitergabe-Paket&#8221; erstellen, welche die getätigten Schritte in einer Art Setup zusammenfasst. Dazu einfach &#8220;Runtime Security Policy&#8221; auswählen und dann oben auf AKTION gehen. Dort kann man nun das &#8220;Deployment-Package&#8221; erstellen.<br />
<img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/CreateDeploymentPackage.png" alt="Verwaltung" /><br />
Hier muss man nun auswählen auf welcher Ebene das Regelpaket angewendet werden soll. In meinem Fall auf Rechnerebene. Enterprise, bzw. Organisation wäre für eine ganze Domäne oder User eben auf bestimmte Benutzer beschränkt. Dann vergibt man nur noch einen Namen und man klickt auf NEXT und dann FERTIG.</p>
<p><img title="Verwaltung" src="http://rasehorn.net/blog/wp-content/uploads/2006/03/14/CASSetup.png" alt="Verwaltung" /></p>
<p>Nun hat man eine &#8220;.msi&#8221; &#8211; Datei die man bequem rumreichen / schicken kann. Diese braucht nur noch jeder einmal ausführen und alle haben die nötigen Rechte um das Programm vom Netzwerk aus zu starten.</p>
<p>Das alles ist natürlich so nicht für große Netzwerke zu empfehlen, denn die haben meist einen Domaincontroller und da sollte das Ganze dann auf Enterprise-Ebene geschehen, d.h. das muss dann nur am Server gemacht werden. Ob das mit dem Server und der Domäne so einfach geht habe ich aber nicht getestet, aber das kommt noch <img src='http://rasehorn.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://rasehorn.net/blog/2006/03/net-programme-vom-netzlaufwerk-starten/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
	</channel>
</rss>
