<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>different minds about different platforms</title>
        <link>http://geekswithblogs.net/dirksblog/Default.aspx</link>
        <description>a blog of Dirk Eisenberg (&gt;)</description>
        <language>de-DE</language>
        <copyright>Dirk Eisenberg</copyright>
        <managingEditor>dirk.eisenberg@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>different minds about different platforms</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/dirksblog/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>VMWare Fusion: Zwei virtuelle Maschinen über den seriellen Port verbinden</title>
            <category>Virtualization</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/07/27/124059.aspx</link>
            <description>Jeder der schonmal einen Kernel-Mode-Treiber unter Windows geschrieben hat, kam auch mit dem Problem in Berührung diesen zu Debuggen. Das üblich Modell hierfür ist die Verwendung eines Null-Modem-Kabels und einem zweiten Rechner als Debugger. Zum Glück gibt es &lt;a title="" href="http://www.vmware.com"&gt;VMWare&lt;/a&gt; und das ganze kann in zwei virtuellen Maschinen bewerkstelligt werden. Hierfür koppelt man die beiden VMs über einen seriellen Port mit dem Type "Named Pipe". Auch auf der MAC Version ist genau dieses Möglich wie ich nach langem Suchen herausgefunden habe. Den Original-Eintrag findet man &lt;a href="javascript:void(0);/*1217179358839*/"&gt;hier&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Der Trick dabei ist eigentlich nur das die Oberfläche von &lt;a title="" href="http://www.vmware.com"&gt;VMWare&lt;/a&gt; Fusion die benötigten Einstellungen nicht her gibt. Trägt man das ganze in die .vmx-Datei selbst ein funktioniert es. Hier nochmal die Einstellungen:&lt;br /&gt;
&lt;br /&gt;
Auf der Client-Seite:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.present = "TRUE"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.fileType = "pipe"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.pipe.endPoint = "client"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.yieldOnMsrRead = "TRUE"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.startConnected = "TRUE"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.fileName = "/Volumes/Virtual Machines/VMware/Serial/devbox_com1"&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
und auf der Server-Seite:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.present = "TRUE"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.fileType = "pipe"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.yieldOnMsrRead = "TRUE"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.startConnected = "TRUE"&lt;/span&gt;&lt;br style="font-family: Courier New;" /&gt;
&lt;span style="font-family: Courier New;"&gt;serial0.fileName = "/Volumes/Virtual Machines/VMware/Serial/devbox_com1"&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124059"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124059" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/124059.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/07/27/124059.aspx</guid>
            <pubDate>Sun, 27 Jul 2008 17:23:56 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/124059.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/07/27/124059.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/124059.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/124059.aspx</trackback:ping>
        </item>
        <item>
            <title>iPhone Software 2.0: Jailbreak und Unlock mit pwnage 2.0</title>
            <category>Apple Mac OS X</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/07/20/123914.aspx</link>
            <description>Schon ganz ungeduldig habe ich den Blog des &lt;a href="javascript:void(0);/*1216578322412*/"&gt;iphone Dev Teams&lt;/a&gt; beobachtet und auf das Release von pwnage 2.0 gewartet. Dieses Tool soll in der Lage sein bei meinem iPhone 2G den jailbreak und unlock durchzuführen. Um die Spannung zu nehmen, es hat geklappt und für alle die keinen MAC daheim haben, gibt es einen Möglichkeit den unlock auch durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Ein kurz Anleitung wie der Prozess durchzuführen ist findet man &lt;a href="javascript:void(0);/*1216578448001*/"&gt;hier&lt;/a&gt;. Im weiteren Verlauf der Kommentare finden sich auch Links zu den Bootloader. Ich wollte eigenlich nur eine Hürde beschreiben. Wie bekommt man sein iPhone in den DFU mode?&lt;br /&gt;
&lt;br /&gt;
1. iPhone über USB andocken &lt;br /&gt;
2. iPhone über die Tastekombination Power + Home ausschalten (ca 7s)&lt;br /&gt;
3. Power + Home Taste ca zwei weitere Sekunden gedrückt halten&lt;br /&gt;
4. Danach die Power-Taste loslassen und Home gedrückt halten bis iTunes das Geräte im Recovery erkennt. Der Monitor des iPhones muss schwarz sein.&lt;br /&gt;
&lt;br /&gt;
Danach befindet sich das iPhone im DFU Mode und kann beliebige Images verdauen. Um ein Image (wie das von pwnage erzeugte) einzuspielen, einfach die alt-Taste (auf MAC) oder die CTRL-Taste gedrückt halten und dann auf Restore in iTunes drücken. Jetzt kann ein beliebiges .ipsw ausgewählt werden. So können auch Windows nutzer ihr iPhone unlocken wenn sie ein passendes .ipsw haben.&lt;br /&gt;
&lt;br /&gt;
 &lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123914"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123914" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/123914.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/07/20/123914.aspx</guid>
            <pubDate>Sun, 20 Jul 2008 18:35:31 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/123914.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/07/20/123914.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/123914.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/123914.aspx</trackback:ping>
        </item>
        <item>
            <title>Virtual Shadow Copy Services - Create Shadow Copy</title>
            <category>Coding</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/04/21/121470.aspx</link>
            <description>&lt;font color="#010001" size="2"&gt;
&lt;p&gt;Einige Abende haben mich nun die icht mehr ganz so neuen Virtual Shadow Copy Services beschäftigt. Für alle die genauso wie ich eine Shadow Copy einer Partition anlegen wolle um mit ihrer Platte irgendetwas in einem stabilien Zustand zu bewerkstelligen sollte dieser Code hilfreich sein. Das Ziel des hier abgebildeten Codes soll es sein eine Virtual Shadow Copy einer Partition zu erzeugen und mit Hilfe von Win32-Apis auf diese zuzugreifen. Der Code beinhaltet natürlich viel zu wenig Error-Handling und achtet auch nicht auf die korrekte Freigabe von Resourcen. Nun aber los:&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;CoInitializeEx( NULL, 0 );&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Zuerst muss COM initialisiert wert, dazu muss man wohl nichts mehr sagen.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;IVssBackupComponents&lt;/font&gt;&lt;font size="2"&gt;* &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;NULL&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; ( &lt;/font&gt;&lt;font color="#010001" size="2"&gt;FAILED&lt;/font&gt;&lt;font size="2"&gt;( &lt;/font&gt;&lt;font color="#010001" size="2"&gt;CreateVssBackupComponents&lt;/font&gt;&lt;font size="2"&gt;( &amp;amp;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt; ) ) )&lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;  return&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; 1;&lt;br /&gt;
&lt;/font&gt;&lt;em&gt;Um überhaupt mit dem VSS-Api arbeiten zu können wird ein Pointer auf ads BackupComponents-Interface benötigt. Dieses Objekte stellt dann Methoden zur Verfügung um VSS zur Arbeit zu überreden. Wichtig bei allen folgenden Methoden-Aufrufen ist die Reihenfolge. Hier legt Microsoft genaue Abläufe fest die umbedingt eingehalten werden müssen. Wer sich nicht daran hält wird mit Error-Codes bestraft (ich habs probiert).&lt;/em&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;InitializeForBackup&lt;/font&gt;&lt;font size="2"&gt;( &lt;/font&gt;&lt;font color="#010001" size="2"&gt;NULL&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; );&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Nachdem wir Zugriff auf das BackupComponents-Objekt erhalten haben, ist die erste Amtshandlung dem System zu sagen wir wollen ein Backup machen. Hierzu muss die Methode InitializeForBackup aufgerufen werden. Erst hierdurch können die nachfolgenden Methoden aufgerufen werden.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;SetContext&lt;/font&gt;&lt;font size="2"&gt;( &lt;/font&gt;&lt;font color="#010001" size="2"&gt;VSS_CTX_BACKUP&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; );&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Dem System ist im dritten Schritt zu sagen welche Art von Backup und damit welche Art von Snapshot erzeugt werden soll. Hier gibt es verschiedene Möglichkeit, grundsätzlich sind aber zwei zu Unterscheide. Eine Variante bezieht die sogenannten Writer mit ein und die andere eben nicht. Writer stellen Userland-Applikation dar die auf bestimmte Aktionen des VSS-Systems reagieren und vor einem Backup bestimmte Aktionen zu beenden. Datenbanken würden alle wichtigen Informationen noch auf die Platte schreiben damit die Datenbank auch in einem brauchbaren Zustand ist. Hat man Softare die keinen VSS-Support bietet, muss wohl der Weg über Stop-Service und Start-Service eben dieser gegangen werden. Erst danach ist es ratsam eine Shadow-Copy zu erzeugen. Wie man Writer schreibt werde ich einem anderen Eintrag versuchen darzustellen.&lt;/em&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;IVssAsync&lt;/font&gt;&lt;font size="2"&gt;* &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pWriteMetaData&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;NULL&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;GatherWriterMetadata&lt;/font&gt;&lt;font size="2"&gt;( &amp;amp;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pWriteMetaData&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt; );&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pWriteMetaData&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;Wait&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;();&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pWriteMetaData&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;Release&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;();&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Da wir Writer-Aktionen in unser Backup einbeziehen, müssen auch die Meta-Daten über diese abgefragt werden. Hierdurch erlangt das System genau Informationen welche Writer wie und wann benachrichtigt werden müssen. Diese Aktion kann durchaus etwas länger dauer. Aus diesem Grund wird hierfür eine Pointer für assynchrone Operationen zurückgegeben mit dessen Hilf das Ende abgewartet werden kann. &lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;VSS_ID&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#010001" size="2"&gt;snapshotSetId&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;StartSnapshotSet&lt;/font&gt;&lt;font size="2"&gt;( &amp;amp;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;snapshotSetId&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; );&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;VSS sieht die Sicherung des geamten Storage-Systems zu einem Zeitpunkt vor, daher reden wir nicht von einem Snapshot eines spezifischen Volumes sondern eine SnapShot-Set der eine Liste von einzubeziehenden Volumes verwaltet. Dadurch ist es Möglich z.B. die Partition für mdf und ldf in einem Snapshot-Set zu fixieren und später einfach zu sichern.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;VSS_ID&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#010001" size="2"&gt;SnapShotId&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;AddToSnapshotSet&lt;/font&gt;&lt;font size="2"&gt;( &lt;/font&gt;&lt;font color="#010001" size="2"&gt;L&lt;/font&gt;&lt;font color="#a31515" size="2"&gt;"F:\\"&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#010001" size="2"&gt;GUID_NULL&lt;/font&gt;&lt;font size="2"&gt;, &amp;amp;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;SnapShotId&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; );&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Haben wir den Container, das SnapShot-Set angelegt, müssen jetzt noch die einzelnen Targets hinzugefügt werden. Die einfachste Methode ist es via Laufwerksbuchstaben eine ganze Partition hinzuzufügren. Dieser Vorgang kann mehrfach für andere Volumes wiederholt werden.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;SetBackupState&lt;/font&gt;&lt;font size="2"&gt;( &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#010001" size="2"&gt;VSS_BT_FULL&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; );&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Da auch inkrementielle Backups vorgesehen sind, ist noch die Art und Weise des Backups zu definieren. In diesem Beispiel wollen wir ein Full-Backup aller Dateien machen. Es gibt auch die Möglichkeit Dateien einzuschränken.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;IVssAsync&lt;/font&gt;&lt;font size="2"&gt;* &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pPrepare&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;NULL&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;PrepareForBackup&lt;/font&gt;&lt;font size="2"&gt;( &amp;amp;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pPrepare&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt; );&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pPrepare&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;Wait&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;();&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pPrepare&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;Release&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;();&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Jetzt nähern wir uns dem Punkt der Wahrheit, dem VSS-System wird mitgeteilt das sich alle Writer und Provider auf das Backup vorbereiten müssen. Kurz darauf folgt dann die eigentlich Erzeugung des Snapshots.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;IVssAsync&lt;/font&gt;&lt;font size="2"&gt;* &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pDoShadowCopy&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;NULL&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;DoSnapshotSet&lt;/font&gt;&lt;font size="2"&gt;( &amp;amp;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pDoShadowCopy&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt; );&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pDoShadowCopy&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;Wait&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;();&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;pDoShadowCopy&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;Release&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;();&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Mit der Methode DoSnapshotSet wird dann für jede Komponente des Sets ein SnapShot erzeugt. Hierbei sorgt das Betriebssystem für die Konsistenz der Daten.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;VSS_SNAPSHOT_PROP&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#010001" size="2"&gt;props&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;;&lt;br /&gt;
&lt;/font&gt;&lt;font color="#010001" size="2"&gt;hr&lt;/font&gt;&lt;font size="2"&gt; = &lt;/font&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;GetSnapshotProperties&lt;/font&gt;&lt;font size="2"&gt;( &lt;/font&gt;&lt;font color="#010001" size="2"&gt;SnapShotId&lt;/font&gt;&lt;font size="2"&gt;, &amp;amp;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;props&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; );&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Nun fehlt nur noch die Information für den Zugriff via Win32-Api. Hierfür stellt die abgerufene Struktur eine Device-Pfad zur Verfügung auf den vie CreateFile und anderen IO-Operation zugegriffen werden kann.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;font color="#010001" size="2"&gt;pBackupComponents&lt;/font&gt;&lt;font size="2"&gt;-&amp;gt;&lt;/font&gt;&lt;font color="#010001" size="2"&gt;Release&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;();&lt;/font&gt;&lt;br /&gt;
&lt;em&gt;Nur noch das Interface release und fertig.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hinweis: In diesem Beispiel wurde ein temporärer Snapshot angelegt, d.h. wenn dieser nicht mehr benötigt wird, verschwindet dieser. Auch ein Restart des VSS-Service lässt den Snapshot verschiedenen. Will man persistente Snapshots, müssen die Flags entsprechend umkonfiguriert werden.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Mit dem Tool dosdev lassen sich so erzeugte Snapshots auch mounten und einem Laufwerksbuchstaben zuordnen. Mehr Informationen hierzu gibt es auf folgenden Seiten: &lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Aldi Olteans Blog &lt;a href="http://blogs.msdn.com/adioltean/archive/2006/09/18/761515.aspx"&gt;(1)&lt;/a&gt; &lt;a href="http://blogs.msdn.com/adioltean/archive/2005/10/04/477164.aspx"&gt;(2)&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cebf3c7c-7ca5-408f-88b7-f9c79b7306c0&amp;amp;DisplayLang=en"&gt;Downlod von dosdev&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Ich werde in den nächsten Artikeln versuchen Schritt für Schritt andere Funktionen auf C++-Ebene zu beschreiben. Hierbei werden Themen wie das Schreiben von VSS-Writern und VDS-Hardware-Providern adressiert. &lt;/em&gt;&lt;/p&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121470"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121470" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/121470.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/04/21/121470.aspx</guid>
            <pubDate>Mon, 21 Apr 2008 19:07:23 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/121470.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/04/21/121470.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/121470.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/121470.aspx</trackback:ping>
        </item>
        <item>
            <title>enteo v6 - Part 2 - CMDB Eigenschaften verwenden</title>
            <category>enteo</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/04/19/121376.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Ich bekommen immer mal wieder anfragen wie man von einem &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; v6 Objekt wie dem Computer Parameter auslesen kann und diese im Skript verwendet werden. Vor einiger Zeit habe ich dazu mal einen Artikel im &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt;-Forum gepostet. Dieser beschreibt nicht nur wie man die Properties ausliest, sondern wie mit Hilfe eines &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; Scripts verschiedene Werte gesetzt werden können. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;a href="http://forum.enteo.com/showpost.php?p=13988&amp;amp;postcount=11"&gt;&amp;gt;&amp;gt; Viel Spass mit dem Artikel &amp;lt;&amp;lt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121376"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121376" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/121376.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/04/19/121376.aspx</guid>
            <pubDate>Sat, 19 Apr 2008 08:46:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/121376.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/04/19/121376.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/121376.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/121376.aspx</trackback:ping>
        </item>
        <item>
            <title>enteo v6 - Part 1 - Klassifizierung von Befehlen</title>
            <category>enteo</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/04/06/121077.aspx</link>
            <description>Im ersten Teil der &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; Reihe möchte ich ein Feature genau beschreiben was hier und da vielleicht in Vergessenheit geraten ist. Die Möglichkeit Befehle in der &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; Script-Sprache zu klassifizieren gibt es schon sehr lange. Ich glaube die Funktion wurde mit dem NT-Support in das Produkt aufgenommen. Wozu braucht man das aber nun und wie funktioniert es:&lt;br /&gt;
&lt;br /&gt;
Wozu:&lt;br /&gt;
&lt;br /&gt;
Oftmals darf der angemeldete Benutzer nicht viel am System verändern aber das Logon-Verhalten des Benutzer steuert eigentlich indirekt die Installation. Daher gibt es die Möglichkeit Aufgaben an einen Dienst zu delegieren und somit Änderungen die administrative Rechte benötigen durchzuführen. &lt;br /&gt;
&lt;br /&gt;
Wie:&lt;br /&gt;
&lt;br /&gt;
(Fast) Jeder Befehl lässt sich im Scrip-Editor klassifizieren. Hierfür stehen folgende Möglichkeiten zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;immer ausführen &lt;/li&gt;
    &lt;li&gt;maschinenbezogen &lt;/li&gt;
    &lt;li&gt;maschinenbezogen per Service &lt;/li&gt;
    &lt;li&gt;userbezigen &lt;/li&gt;
    &lt;li&gt;userbezigen per Service &lt;/li&gt;
&lt;/ul&gt;
Für die Bewertung wann welche Klassifizierung verwendet wird, ist wichtig die Trennung zwischen Benutzerteil und Maschinenteil zu verstehen. Jedes &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; Script besteht immer aus einem Benutzer und Maschinenteil, egal ob man das sieht oder nicht. Bei der Installation des Paketes muss jetzt entschieden werde, welche Befehle ausgeführt werden müssen. Es gibt die Möglichkeit das Befehle im Rahmen des Maschinenteils oder im Rahmen des Benutzerteils ausgeführt werden. Diese Entscheidung muss entweder der Service-Installer oder der Auto-Installer, wobei der Service-Installer nur die Maschinenteile installieren kann und keine Benutzerteile da es ja keinen angemeldetet Benutzer gibt. Also wann wird nun was ausgeführt:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;immer ausführen:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;wird durch den ServiceInstaller oder den AutoInstaller ausgeführt &lt;/li&gt;
    &lt;li&gt;wird während der Installation des Benutzerteils als auch des Maschinenteils ausgeführt &lt;/li&gt;
    &lt;li&gt;wird im Kontext des jeweiligen Installers ausgeführt &lt;/li&gt;
&lt;/ul&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;maschinenbezogen:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;wird durch den ServiceInstaller oder den AutoInstaller ausgeführt &lt;/li&gt;
    &lt;li&gt;wird nur während der Installation des Maschineteils ausgeführt &lt;/li&gt;
    &lt;li&gt;wird im Kontext des jeweiligen Installers ausgeführt &lt;/li&gt;
&lt;/ul&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;maschinenbezogen per Service:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;wird durch den ServiceInstaller oder den AutoInstaller ausgeführt &lt;/li&gt;
    &lt;li&gt;wird nur während der Installation des Maschinenteils ausgeführt &lt;/li&gt;
    &lt;li&gt;wird im Kontext des Services ausgeführt &lt;/li&gt;
&lt;/ul&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;userbezogen:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;wird nur durch den AutoInstaller ausgeführt &lt;/li&gt;
    &lt;li&gt;wird nur währned der Installation des Benutzerteils ausgeführt &lt;/li&gt;
    &lt;li&gt;wird im Kontext des AutoInstallers ausgeführt &lt;/li&gt;
&lt;/ul&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;userbezogen per Service:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;wird nur durch den AutoInstaller ausgeführt &lt;/li&gt;
    &lt;li&gt;wird nur währned der Installation des Benutzerteils ausgeführt &lt;/li&gt;
    &lt;li&gt;wird im Kontext des Service ausgeführt &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das folgende Beispiel soll das Verhalten verdeutlichen. Ein skript bestehend aus:&lt;/p&gt;
&lt;p&gt;MsgBox("Immer ausführen")&lt;br /&gt;
MsgBox("Workstationbezogen")&lt;br /&gt;
MsgBox("Userbezogen")&lt;/p&gt;
&lt;p&gt;wird wie folgt ausgeführt wenn es nocht nicht installiert ist:&lt;/p&gt;
&lt;p&gt;Der Benutzer meldet sich an alos muss der Maschinen und der Benutzerteil installiert werden. Es ist ja noch nichts auf dem Client ausgeführt wurden. Es erscheinen also alle 3 Message-Boxen auf dem Bildschirm des Benutzers. &lt;/p&gt;
&lt;p&gt;Nach dieser Installation würde sich Benutzer 2 anmelden:&lt;/p&gt;
&lt;p&gt;Der Benutzer meldet sich an, wobei jetzt nur noch der Benutzerteil des neuen Benutzers installiert werden muss. Der Maschinenteil ist ja schon auf dem System. Also erscheinen 2 Message-Box auf dem Desktop des Benutzers (MsgBox("Immer ausführen") und MsgBox("Userbezogen")). &lt;/p&gt;
&lt;p&gt;Mit diesem Wissen kann man jetzt mal die Wirkung RegLoad-Befehl erforschen, insbesondere wenn dieser auf "Immer ausführen" steht und sowohl Teile in HKEY_CURRENT_USER als auch HKEY_CURRENT_MACHINE verändert. Fragen dazu dürfen gerne als Kommentar gestellt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;span style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121077"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121077" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/121077.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/04/06/121077.aspx</guid>
            <pubDate>Sun, 06 Apr 2008 10:54:07 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/121077.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/04/06/121077.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/121077.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/121077.aspx</trackback:ping>
        </item>
        <item>
            <title>enteo v6</title>
            <category>enteo</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/04/06/121076.aspx</link>
            <description>Ich habe lange überlegt ob ich in diesem Block auch die Produkte meines Arbeitgebers einbeziehen soll und habe mich diese Woche dafür entschieden. Dabei geht es nicht um Werbung für die &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; Produktlinie sondern um interessante Funktionen die dem ein oder anderem Admin das Leben erleichtern werden. Ich werde in unregelmäßigen Abständen interessante Thema aus der &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; Produktfamilie herausgreifen und hoffentlich wertvolle Tips geben. Das ersetzt aber nicht die Schulung, den Support und das &lt;a href="http://forum.enteo.com"&gt;enteo Support-Forum&lt;/a&gt;.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121076"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121076" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/121076.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/04/06/121076.aspx</guid>
            <pubDate>Sun, 06 Apr 2008 10:41:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/121076.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/04/06/121076.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/121076.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/121076.aspx</trackback:ping>
        </item>
        <item>
            <title>Debian Repository für iSCSI Enterprise Target</title>
            <category>Coding</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/03/02/120135.aspx</link>
            <description>Jeder der eine standard etch Installation sein eigen nennt kann jetzt entwerder via Apt oder per Download ein Debian-Paket für das iSCSI Enterprise Target 0.4.15  installieren. Ich werde in Zukunft diese Paket immer wieder aktualisieren. &lt;br /&gt;
&lt;a href="http://www.dirk-eisenberg.de/DEI/Projects.html"&gt;&lt;br /&gt;
hier gehts zum Paket&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Wer selbst mal Pakete erstellen und APT-Repositories aufsetzen möcht, dem helfen vielleicht die folgenden Informationen:&lt;br /&gt;
&lt;a href="http://www.debian-administration.org/articles/286"&gt;&lt;br /&gt;
Setting up your own APT repository with upload support&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.ibm.com/developerworks/linux/library/l-debpkg.html"&gt;Create Debian Linux packages&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120135"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120135" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/120135.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/03/02/120135.aspx</guid>
            <pubDate>Sun, 02 Mar 2008 17:56:22 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/120135.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/03/02/120135.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/120135.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/120135.aspx</trackback:ping>
        </item>
        <item>
            <title>Dynamische Libraries mit dem Applikations-Bundle verteilen</title>
            <category>Apple Mac OS X</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/02/07/119345.aspx</link>
            <description>auch auf einem Apple Mac nutzt man in der Regel dynamische Bibliotheken um komplexer werdende Software in verschiedene Module aufzuteilen. Wie auch unter Linux ist das aber so ein Sache wenn es dann um die Verteilung des gesamten Produkts geht. Die von Windows bekannte Side-by-Side-Execution greift leider nicht und somit such der Library-Loader eben nicht im  lokalen Verzeichnis nach der Datei. Also was tun. Apple hat zu diesem Zweck dsa Konzept der Bundles. Bundles sind eigentlich nur festgesetzte Verzeichnisstrukturen, die sowieso hinter jeder Applikation die mit XCode erzeugt wird, stehen. In diese Struktur wird die Library an eine bestimmte Stelle gelegt und der Build-Prozess angepasst. Hierzu sind folgende Schritte nötig:&lt;br /&gt;
&lt;br /&gt;
1. Library-Settings so anpassen das beim Linken immer relativ vom Verzeichnis des Executables referenziert wird.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/dirksblog/2811/r_libsettings.jpg"&gt;&lt;img alt="" src="http://geekswithblogs.net/images/geekswithblogs_net/dirksblog/2811/r_libsettings.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Hierfür legt man in den Project-Settings des XCode-Projektes den Install-Path der Library wie folgt fest: @executable_path/../Frameworks/yourlib.dylib.&lt;br /&gt;
&lt;br /&gt;
2. Einfühurng eines Custom-Build-Steps beim Erzeugen der eigentlichen Software einführen um die benötigten Libraries zu kopieren.&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://geekswithblogs.net/images/geekswithblogs_net/dirksblog/2811/r_buildstep.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
Hierfür nehmen wir die Croos-Referenz auf das Library-Projekt aus dem letzen Beitrag wieder her und ziehen die sich darin befindliche .dylib auf den eben erzeugte Custom-Build-Step (sieh Abbildung).&lt;br /&gt;
&lt;br /&gt;
Wird nun das Hauptprojekt erzeugt, entsteht immer ein Applikations-Bundle was via Drag-n-Drop vom Benutzer installiert werden kann ohne das aufwändig Setupskripte Libraries an andere Stellen kopieren müssen. Das ganze ist dann nun nur noch hübsch in ein Disk-Image zu verpacken und fertig für den Rollout.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119345"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119345" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/119345.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/02/07/119345.aspx</guid>
            <pubDate>Wed, 06 Feb 2008 23:03:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/119345.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/02/07/119345.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/119345.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/119345.aspx</trackback:ping>
        </item>
        <item>
            <title>dylib - Cross Project Dependencies</title>
            <category>Apple Mac OS X</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2008/01/27/118955.aspx</link>
            <description>Nachdem ich die ersten Schritte auf meinem Mac erfolgreiche gegangen bin, rückt das erste Mac OS X - Projekt in Objective-C immer näher. Heute habe ich mich dann mit der korrekten Aufteilung meiner Software in verschiedene Libraries beschäftigt. Nun stand ich vor dem Problem wie sagt man XCode das man auf ein anderes Projekt verweisen möchte und erzeugt dabei eine korrekte Abhängigkeit für den Linker. Dieser soll natürlich die dynamische Library in Abhängigkeit der eingestellten Konfiguration nutzen. Die Antwort ist einfach aber nicht offensichtlich.&lt;br /&gt;
&lt;br /&gt;
1. Cross Project Dependencies&lt;br /&gt;
&lt;br /&gt;
Zuerst muss das referenzierte Projekt in den XCode-Baum eingebaut werden. Hierzu muss lediglich über das Kontext-Menu (Add-&amp;gt;Existing Files) das entsprechende ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
2. Referenziertes Projekt in den Linker einbinden&lt;br /&gt;
&lt;br /&gt;
Jetzt kann das referenzierte Projekt im Tree-View über den kleinen Pfeil aufgeklappt werden. Es werde daduch alle Produkte des Projektes sichbar. &lt;br /&gt;
&lt;br /&gt;
Einfach die entsprechende Library auswählen und zum linken durch den Hacken am rechten Zeilenende setzen:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/dirksblog/2811/o_xcode_cr3.jpg"&gt;&lt;img src="http://geekswithblogs.net/images/geekswithblogs_net/dirksblog/2811/o_xcode_cr3.jpg" style="width: 480px; height: 315px;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Danach wird XCode wie erwartet im Debug-Build die Debug-Lib und im Release-Build die Release-Lib anziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118955"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118955" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/118955.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2008/01/27/118955.aspx</guid>
            <pubDate>Sun, 27 Jan 2008 02:52:29 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/118955.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2008/01/27/118955.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/118955.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/118955.aspx</trackback:ping>
        </item>
        <item>
            <title>Virtual Box 1.5.2 und VMWare 6.0.2 in einem Host-Only-Netzwerk</title>
            <category>Virtualization</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2007/10/21/116195.aspx</link>
            <description>&lt;p&gt;Heute stand ich vor der Herausforderung mal zu prüfen ob es möglich ist ein Windows-XP via &lt;a title="" href="http://www.enteo.com"&gt;enteo&lt;/a&gt; v6 OSD in einer Virtual Box von &lt;a title="" href="http://www.innotek.de/"&gt;innoTek&lt;/a&gt; aufzusetzen. Dumm an der Geschichte ist nur das die gesamte OSD Infrastruktur auf einem Laptop in &lt;a title="" href="http://www.vmware.com"&gt;VMWare&lt;/a&gt; läuft und zu allem Überfluss die gesamte Umgebung Host-Only geschalten ist. Klar bei Protokollen wie DHCP und PXE ist da nötig nur was tun? Virtual Box bietet eine Netzwerkeinstellung die sich Host-Interface nennt. AKtiviert man diese Einstellung erscheint auf dem Host-Computer ein neues TAP-basiertes Netzwerk-Device. Ok nach kurzem Grübeln war die Idee gefasst das Host-Only-Device von &lt;a title="" href="http://www.vmware.com"&gt;VMWare&lt;/a&gt; mit dem TAP-Device von Virtual-Box über ein Windows XP MAC-Bridge zu verbinden. Danach sollte ja der ganze Verkehr zwischen diesen Systemen nicht schnell aber sauber transportiert werden.&lt;/p&gt;
&lt;p&gt;Gesagt getan. Leider meldet sich der &lt;a title="" href="http://www.vmware.com"&gt;VMWare&lt;/a&gt;-Treiber gleich mit einer Fehlermeldung und verweist auf ein &lt;a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=1212"&gt;Whitepaper&lt;/a&gt;. Dieses Papier beschreibt das zum Schutz des Kunden diese Funktion abgeschalten ist damit keine DHCP-Server produktive Netzwerke fluten. Gleichzeitig wird auf Registryeinträge zur Freischaltung  verwiesen. &lt;/p&gt;
&lt;p&gt;Nach Überwindung dieser letzten Hürde ist die Bridge ist eingerichtet und virtuelle Gast-Systeme aus der einen Welt können mit Gast-Systemen aus der anderen Welte kommunizieren.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116195"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116195" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/116195.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2007/10/21/116195.aspx</guid>
            <pubDate>Sun, 21 Oct 2007 10:39:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/116195.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2007/10/21/116195.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/116195.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/116195.aspx</trackback:ping>
        </item>
        <item>
            <title>Virtual Box 1.5 und der VRDP-Server</title>
            <category>Virtualization</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2007/09/16/115393.aspx</link>
            <description>Komisch wie schnell die Zeit vergeht wenn man an einem Produkt arbeitet wie enteo v6. Eigentlich wollte ich mit dem Release der nächsten Generation Lifecycle-Management (enteo v6) wieder anfangen Artikel über mich und mein Leben bei und mit enteo zu schreiben. Tja kam alles anders alls gedacht und wir jaben viel Herz in das erste Service-Release gesteckt und damit ist die Zeit des Bloggens wieder da, zumindest habe ich mir das vorgenommen. &lt;br /&gt;
&lt;br /&gt;
Lange wollte ich mich schon etwas mehr mit dem Virtualisierungsprodukts unseres quasi Nachbarns beschäftigen (innotek) und jetzt habe ich es getan. Das Produkt macht auch aus meiner Sicht einen guten Eindruck und ich werde es wohl weiter verwenden, auch wenn das Bridged-Problem in der aktuellen Version nicht zu meiner Zufriedenheit gelöst ist. Kommen wir aber zu einem Feature was mich begeistert. Der Virtual RDP-Zugang ist in der aktuellen Version richtig gut gelungen. Ich kann meine VMS einfach auf einem Rechner laufen lassen und über RDP zugreifen sowohl in der Windows-Setup oder BIOS-Phase. Damit hat sich innotek aus meiner Sicht eine geniale Option offen gelassen mit der die Erweiteurng ihrer Basis-Technologie im Bereich Infrastruktur-Management sowie Lab-Management möglich ist. Ich stelle mir mit Freude einen stabilen, leistungsfähigen Remote-Client in einer virtuellen Infrastruktur vor oder wer hat schonmal nen XP via RDP aufgesetzt. Beim Mitbewerber VMWare ist man auf den doch recht instabilen und bandbreitenfressenden VI-Client angewiesen. Der RDP-Client hat bei mir nen ganzen Nachmittag sauber seinen Dienst verrichtet. Also vermute ich mal das es sich bei der &lt;a href="http://mcblogs.craalse.de/sku?title=virtualbox&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1"&gt;Bewertung&lt;/a&gt; meines Kollegens &lt;a title="" target="_blank" href="http://www.stefan-kuhr.de"&gt;Stefan Kuhr&lt;/a&gt; sicher nur um Mängel in der Version1.3.2 handelte. Jetzt würde mich eigentlich nur interessieren ob es auf Basis dieser Technologie irgendwann mal eine Infrastruktur-Komponente gibt um größere Umgebungen und Virtual-Server-Farmen zu verwalten?&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115393"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115393" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/115393.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2007/09/16/115393.aspx</guid>
            <pubDate>Sun, 16 Sep 2007 03:13:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/115393.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2007/09/16/115393.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/115393.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/115393.aspx</trackback:ping>
        </item>
        <item>
            <title>.NET Unmanaged API - Teil 1</title>
            <category>.NET Coding</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2006/05/07/77514.aspx</link>
            <description>puh, schon wieder sind einige Wochen vergangen und ich habe nix zu diesem Blog beigetragen. Diese Woche hatte ich dann ein Erlebnis was mich zum Bloggen nötigt. Wie der Titel schon verrät, soll es um einen Teil des &lt;a title="" href="http://de.wikipedia.org/wiki/.NET" target="_blank"&gt;.NET&lt;/a&gt; Frameworks gehen, der nicht unbedingt gut dokumentiert ist und den Name "Unmanaged API" trägt.  Die Unmanaged &lt;a title="" href="http://de.wikipedia.org/wiki/.NET" target="_blank"&gt;.NET&lt;/a&gt; Api stellt ein Set von COM-Interfaces zur Verfügung um auf die Meta-Daten eines &lt;a title="" href="http://de.wikipedia.org/wiki/.NET" target="_blank"&gt;.NET&lt;/a&gt;-Assemblies aus native Code heraus zuzugreifen. Eine Populärer Anwendung dieser API ist Visual Studio 2005 selbst. Viele Funktionen die sich sonst in System.Reflection befinden, sind ebenfalls über diese Schnittstelle erreichbar. Schauen wir uns ein Beispiel an, das prüft ob die gegebene Datei ein gültiges .NET Assembly ist:

&lt;pre&gt;
HRESULT hr = CoCreateInstance(	CLSID_CorMetaDataDispenser, 0, CLSCTX_INPROC_SERVER, IID_IMetaDataDispenser, 						(LPVOID*)&amp;pIMetaDataDispenser);
if (SUCCEEDED(hr))
{
 mdAssembly asmToken;
 hr = pIMetaDataDispenser-&gt;OpenScope(	L"MyAssemblyImage", ofRead, IID_IMetaDataAssemblyImport, (LPUNKNOWN*)&amp;pIMetaDataAssemblyImport); 
 hr = pIMetaDataAssemblyImport-&gt;GetAssemblyFromScope(&amp;asmToken);
 
 bool bIsAssembly = false;
 if (SUCCEEDED(hr))
  bIsAssembly = true;  
}
&lt;/pre&gt;

Eigentlich spricht der Code für sich, zuerst benötigen wir eine Instanz des MetaDataDispenser wodurch wir Zugriff auf alle Metadaten-Tabellen erhalten. Jetzt ist es möglich auf die verschiedenen Bereiche zuzugreifen. In diesem Beispiel auf die Meta-Daten in denen die Referenzen auf andere Assemblies zu finden sind. Um zu erkennen ob es ein gültiges Assembly ist, wird der Seiteneffekt genutzt das jedes Assembly diese Tabelle besitzt und das Öffnen dieses Scopes nur bei native-Binaries nicht funktioniert.

&lt;b&gt;Randbemerkung:&lt;/b&gt;
Die Unmanaged API steht nur auf Computern zur Verfügung auf denen auch ein .NET-Framework installiert ist. Viele der unterstützten Funktionen werden ab .NET 1.0 unterstützt. Die benötigte include Datei "cor.h" findet sich in den Headern des .NET-Frameworks und muss eingebunden werden. Dabei wird indirekt die Datei specstrings.h angezogen. Diese steht erst in einem der letzten SDKs zur Verfügung (ich nutze das Windows 2003 Server SP1 SDK).
&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=77514"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=77514" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/77514.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2006/05/07/77514.aspx</guid>
            <pubDate>Sun, 07 May 2006 20:28:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/77514.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2006/05/07/77514.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/77514.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/77514.aspx</trackback:ping>
        </item>
        <item>
            <title>WOW64 - Es lebe der 32Bit Prozess - Teil 3</title>
            <category>64Bit Windows</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2006/03/09/71791.aspx</link>
            <description>&lt;P&gt;Ok, meine Workstations haben alle was zu tun und ich damit nix mehr. Meinen Patch habe ich auch schon durch also muss ich irgendwie die restlichen 10 Minuten &amp;#252;berbr&amp;#252;cken. Gerade in diesem Moment erinnere ich mich an einen &lt;A href="http://geekswithblogs.net/dirksblog/archive/2006/03/04/71368.aspx#FeedBack"&gt;Kommentar&lt;/A&gt; meines &lt;A href="http://www.stefan-kuhr.de"&gt;Kollegen&lt;/A&gt; zur Verf&amp;#252;gbarkeit der sch&amp;#246;nen neuen WOW64 APIs. Wo stehen nun die Funktionen aus kernel32.dll zur Verf&amp;#252;gung und wo nicht? Die MSDN sagt dazu nur Windows XP und Windows 2003 Server woraus die Vermutung w&amp;#228;chst das die WOW64-Funktionen auch im 32Bit-Build f&amp;#252;r Windows XP SP0 und h&amp;#246;her enthalten sind. Einmal den Dependency Walker auf den verschiedenen System gestartet und ja es ist so alle Versionen ob 64Bit Edition oder 32Bit Edition bieten diese APIs an. Wer also Applikationen schreibt, die nur auf den unterst&amp;#252;tzen System zur Ausf&amp;#252;hrung kommen, kann auf die Nutzung von GetProcAddress getrost verzichten. Alle anderen d&amp;#252;rfen und m&amp;#252;ssen die etwas umst&amp;#228;ndlichere Vorgehensweise w&amp;#228;hlen. &lt;/P&gt;
&lt;P&gt;So der &lt;A href="http://www.netinstall.com"&gt;Build&lt;/A&gt; ist durch und ich kann weiter arbeiten.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=71791"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=71791" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/71791.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2006/03/09/71791.aspx</guid>
            <pubDate>Thu, 09 Mar 2006 07:01:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/71791.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2006/03/09/71791.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/71791.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/71791.aspx</trackback:ping>
        </item>
        <item>
            <title>64 Bit Windows</title>
            <category>64Bit Windows</category>
            <category>Coding</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2005/09/23/54806.aspx</link>
            <description>&lt;P&gt;Ich m&amp;#246;chte an dieser Stelle auf eine Blog Serie verweisen, die mein Kollege &lt;A href="http://www.stefan-kuhr.de"&gt;Stefan Kuhr &lt;/A&gt;begonnen hat. Hier bekommt man einen netten Einstieg in die derzeit von Microsoft unterst&amp;#252;tzten Tool und Techniken zur Entwicklung von Software auf 64Bit-Plattformen. F&amp;#252;r jeden der noch nicht  mit den Eigenheiten dieser Plattform vertraut ist, stellt diese Serie ein muss dar.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://mcblogs.craalse.de/sku?cat=15"&gt;http://mcblogs.craalse.de/sku?cat=15&lt;/A&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=54806"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=54806" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/54806.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2005/09/23/54806.aspx</guid>
            <pubDate>Fri, 23 Sep 2005 15:33:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/54806.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2005/09/23/54806.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/54806.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/54806.aspx</trackback:ping>
        </item>
        <item>
            <title>MD8800 und Windows XP 64Bit Edition</title>
            <category>Other</category>
            <category>64Bit Windows</category>
            <link>http://geekswithblogs.net/dirksblog/archive/2006/02/25/70681.aspx</link>
            <description>&lt;P&gt;Uuuppps, mein letzter Eintrag in diesem Blog ist nun schon einige Monate her. Nun zum Thema dieses Artikels. Vor kurzem habe ich mir einen Aldi-PC MD8800 gekauft. Nat&amp;#252;rlich musste das mitgelieferte Windows XP Home-Edition einer 64Bit Edition weichen. Hier stellt sich nun die Frage, wo bekommt man die ganzen Treiber her. Von Medion jedenfalls nicht.&lt;/P&gt;
&lt;P&gt;Nicht zum laufen bekommt man die gute TV-Tuner-Karte, aber sie ist ausbaubar und in einem anderen PC verwendbar ;-). Daf&amp;#252;r gibt es einfach keine 64Bit Treiber. Das Display kann man auch nur nutzen, wenn man sich selbst hilft und den internen Serial-Port anprogrammiert (dazu vielleicht irgendwann mehr). Leider zeigte sich Medion bei der Herausgabe der Schnittstellen-Dokumente sehr unkooperativ.&lt;/P&gt;
&lt;P&gt;Auf anhieb findet man Treiber f&amp;#252;r die &lt;A href="http://www.realtek.com.tw/downloads/dlhd-2.aspx?lineid=2004052&amp;famid=2004052&amp;series=2004061&amp;Software=True&amp;title=HD%20Audio%20CODECs"&gt;RealTek Soundkarte&lt;/A&gt;. Es ist ratsam vorher den Patch zu &lt;A href="http://support.microsoft.com/?kbid=901105"&gt;KB901105 &lt;/A&gt;einzuspielen um den Microsoft HDI Bug zu beheben, sonst bleibt der Rechner stumm. Weiter gehts mit der WLAN-Karte, welche durch Windows auch nicht standardm&amp;#228;&amp;#223;ig erkannt wurde. Nach kurzem Suche wird klar das es sich um eine &lt;A href="http://www.ralinktech.com/supp-1.htm"&gt;RT2500&lt;/A&gt; von Ralink handelt. Jetzt kommen wir zum Problemfall, die NVIDIA GeForce 6700 XL. Bei Medion gibt es nur eine uralte Forceware f&amp;#252;r 32Bit-Rechner, die 64Bit-Version auf de &lt;A href="http://www.nvidia.de/object/winxp64_81.98_de.html"&gt;NVidia WebSite&lt;/A&gt; ist wesentlich neuer, kennt aber die GeForce 6700 XL nicht. Ich habe dann einfach probiert das Treiber-INF-File aufzubohren und siehe da, man kann seine NVidia Geforce 6700 XL installieren, mit der aktuellen 64Bit-ForceWare. Hier folgt nur das &lt;A href="http://unxutils.sourceforge.net/"&gt;Diff&lt;/A&gt; der gepatchten INF-File:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;139a140&lt;BR&gt;&gt; %NVIDIA_NV43.DEV_0147.1% = nv4_NV3x,               PCI\VEN_10DE&amp;DEV_0147&lt;BR&gt;953a955&lt;BR&gt;&gt; NVIDIA_NV43.DEV_0147.1 = "NVIDIA GeForce 6700 XL"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Damit ist der Anfang gemacht. Jetzt r&amp;#252;ckt das Display wieder in den Fokus, welches ich nat&amp;#252;rlich auch gern nutzen m&amp;#246;chte. Dazu aber mehr in einem sp&amp;#228;teren Blog (vielleicht).&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=70681"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=70681" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/dirksblog/aggbug/70681.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dirk Eisenberg</dc:creator>
            <guid>http://geekswithblogs.net/dirksblog/archive/2006/02/25/70681.aspx</guid>
            <pubDate>Sat, 25 Feb 2006 10:43:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/dirksblog/comments/70681.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/dirksblog/archive/2006/02/25/70681.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/dirksblog/comments/commentRss/70681.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/dirksblog/services/trackbacks/70681.aspx</trackback:ping>
        </item>
    </channel>
</rss>