<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3327384015096906984</id><updated>2011-12-06T02:06:40.860-08:00</updated><category term='skeletal animation'/><category term='sweetness'/><category term='Software Engineering'/><category term='bugs'/><category term='registry'/><category term='Torres'/><category term='boys'/><category term='Kate'/><category term='applet'/><category term='Apple'/><category term='apachectl'/><category term='FedEx'/><category term='Flash'/><category term='Visual Studio 2008'/><category term='girls'/><category term='gacutil'/><category term='Mac Pro'/><category term='geekery'/><category term='Liverpool'/><category term='Mac'/><category term='keyboard'/><category term='codebase'/><category term='Contests'/><category term='tv'/><category term='Add-Ons'/><category term='Presumed Idiocy'/><category term='Windows 7 64-bit'/><category term='IE7'/><category term='birls'/><category term='64-bit'/><category term='policy file'/><category term='lemonade fast'/><category term='security'/><category term='Christmas'/><category term='humour'/><category term='Rock band'/><category term='Extensions'/><category term='OSX'/><category term='GooTube'/><category term='Parallels'/><category term='Kies Mini'/><category term='Boot Camp'/><category term='Egg Beaters'/><category term='permissions'/><category term='Firefox'/><category term='iTunes'/><category term='Eject'/><category term='cleansing'/><category term='food challenge'/><category term='Japan'/><category term='IE8'/><category term='Eclipse'/><category term='Chepe&apos;s'/><category term='Qt'/><category term='middle aged stupidity'/><category term='BucketHead'/><category term='F12'/><category term='dwarf crime'/><category term='Gary Larson'/><category term='bones'/><category term='crApple'/><category term='Broken Man'/><category term='Vista'/><category term='Powershell'/><category term='VMWare Fusion'/><category term='MSJVM'/><category term='AppleScript'/><category term='Morning Coffee'/><category term='Ananova'/><category term='Visual Studio 2005'/><category term='goys'/><category term='Comments'/><category term='TCP/IP'/><category term='Finder'/><category term='reFIT'/><category term='Scrappy'/><category term='nerdilicous'/><category term='Froyo'/><category term='Crackdealer Jeff'/><category term='Foosball'/><category term='32-bit'/><category term='virtual pc'/><category term='animation'/><category term='skinning'/><category term='Food'/><category term='offroad'/><category term='windows'/><category term='services'/><category term='Android'/><category term='Windows 7'/><category term='assemblies'/><category term='linux'/><category term='apache'/><category term='tabs'/><category term='monster burrito'/><category term='golf'/><category term='Music'/><category term='gptsync'/><category term='Comics'/><category term='Gadgets'/><category term='The Far Side'/><category term='JRE'/><category term='Eggs'/><category term='Java'/><category term='Lego'/><category term='toys'/><category term='C#'/><category term='key bindings'/><category term='osx 10.6.5'/><category term='lemonade'/><category term='Android 2.2'/><category term='mud'/><category term='3D'/><category term='Peer pressure'/><category term='Samsung'/><category term='Captivate'/><category term='COLLADA'/><category term='Football'/><title type='text'>18 and 5</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>78</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1217153778436989662</id><published>2011-11-07T12:19:00.000-08:00</published><updated>2011-11-07T12:19:12.843-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='Powershell'/><title type='text'>Associating execution of Powershell scripts with the default open action in Windows 7</title><content type='html'>I've been using Powershell a bit lately and finally got to the point where I'm using it so much I want to be able to simply double click on a *.ps1 script file and have Powershell execute it.&amp;nbsp; So, in the interest of creating an internet based reference that I can Google myself when I forget this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*** Note:&amp;nbsp; Always backup your registry before editing it unless you really like rebuilding things ***&lt;br /&gt;&lt;br /&gt;Basically you need to create a default value inside the registry key (if the sequence of keys doesn't exist, create them):&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Open\Command&lt;br /&gt;&lt;br /&gt;Leave the value with the name '(Default)', make it of type REG_SZ, and set the data to:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;windows&gt;\system32\WindowsPowerShell\v1.0\powershell.exe -command "&amp;amp; '%1' "&lt;/windows&gt;&lt;br /&gt;&lt;br /&gt;Where "&lt;windows&gt;" is the location of your Windows directory.&lt;/windows&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The sequence "&amp;amp; '%1' " is important.&lt;br /&gt;&lt;br /&gt;BTW, I highly recommend that you make sure your Powershell script execution settings are set to require remote scripts to be signed properly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1217153778436989662?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1217153778436989662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/11/associating-execution-of-powershell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1217153778436989662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1217153778436989662'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/11/associating-execution-of-powershell.html' title='Associating execution of Powershell scripts with the default open action in Windows 7'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1732286795000289784</id><published>2011-08-15T05:13:00.000-07:00</published><updated>2011-08-15T05:13:08.780-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Add-Ons'/><category scheme='http://www.blogger.com/atom/ns#' term='Extensions'/><category scheme='http://www.blogger.com/atom/ns#' term='Morning Coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>When your favorite Firefox extension gets 'obsoleted' on you...</title><content type='html'>...you can sometimes get around waiting for the developer of the extension to update it for whatever version of FF you're currently on.&lt;br /&gt;&lt;br /&gt;Often, the extension will have an attribute specifying the greatest version of Firefox that it can be used on.&amp;nbsp; This is, of course, a safety mechanism to avoid having a new version of Firefox break the extension and everyone start screaming at the extension developer (which is always a stupid thing to do irrespective of your reasoning) about how their extension is crap/broken/stupid/et cetera.&lt;br /&gt;&lt;br /&gt;I have a Firefox extension that I dearly love and for the past few weeks, since I let Firefox update me to version 6.0.* I have been without it.&amp;nbsp; I ***NEED*** my &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/morning-coffee/"&gt;Morning Coffee&lt;/a&gt; I tell you.&lt;br /&gt;&lt;br /&gt;So, finally getting my lazy a**, I decided to look into this and found a version attribute in the extensions install.rdf file that limited it to 4.0.*.&amp;nbsp; I changed that to 8.0.*, and then started up Firefox and voila - lo and behold morning coffee is on.&amp;nbsp; Thank you God (and &lt;a href="http://www.shaneliesegang.com/projects/coffee.php"&gt;Shane Liesegang&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;So, to do this yourself:&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp; Find your morning coffee add-on, or download it (it should be a file ending in *.XPI)&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp; Unzip it (it is basically a zipped folder)&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp; Edit the install.rdf file, changing maxVersion to 8.0.* (or some value matching your current Firefox version or higher (mine says em:maxVersion="8.0.*")&lt;br /&gt;&lt;br /&gt;4.&amp;nbsp; Recompress the folder (make sure you are inside the unzipped folder and select all of the items in the root of the directory because many archiving utilities create an extra folder to store your zipped content in when the compress)&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp; Change the file extension, if necessary, to *.XIP as this is the default extension extension *chuckle* - your honor, your honor...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1732286795000289784?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1732286795000289784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/08/when-your-favorite-firefox-extension.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1732286795000289784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1732286795000289784'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/08/when-your-favorite-firefox-extension.html' title='When your favorite Firefox extension gets &apos;obsoleted&apos; on you...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8774502952819188084</id><published>2011-05-29T11:29:00.000-07:00</published><updated>2011-11-06T10:57:55.831-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='monster burrito'/><category scheme='http://www.blogger.com/atom/ns#' term='food challenge'/><category scheme='http://www.blogger.com/atom/ns#' term='Chepe&apos;s'/><title type='text'>Did this about 3 months back - Chepe's Monster Burrito Challenge</title><content type='html'>If you eat it, in any period of time you can muster, you get a t-shirt.&amp;nbsp; Trust me, the t-shirt is NOT worth the effort of eating this behemoth.&lt;br /&gt;&lt;br /&gt;By the way, in the picture, her arm is nearly touching the back of the burrito - it isn't a trick of perspective.&amp;nbsp; The thing weighs (supposedly) more than 6 pounds.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-twqkcXbT3c0/TeKQPGKbynI/AAAAAAAAAG4/sHtNvLVxU-o/s1600/El+Chepes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-twqkcXbT3c0/TeKQPGKbynI/AAAAAAAAAG4/sHtNvLVxU-o/s320/El+Chepes.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The only good things are that it is very tasty (for the first 70 bites or so) and it is cheap - only around $15 if I recall correctly.&lt;br /&gt;&lt;br /&gt;I will not be doing this ever again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8774502952819188084?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8774502952819188084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/05/did-this-about-3-months-back-chepes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8774502952819188084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8774502952819188084'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/05/did-this-about-3-months-back-chepes.html' title='Did this about 3 months back - Chepe&apos;s Monster Burrito Challenge'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-twqkcXbT3c0/TeKQPGKbynI/AAAAAAAAAG4/sHtNvLVxU-o/s72-c/El+Chepes.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5753169917665137173</id><published>2011-05-20T12:14:00.000-07:00</published><updated>2011-05-20T12:14:57.337-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='applet'/><category scheme='http://www.blogger.com/atom/ns#' term='permissions'/><category scheme='http://www.blogger.com/atom/ns#' term='codebase'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='policy file'/><title type='text'>F**$#&amp;% Java Policy Files</title><content type='html'>If you have ever had to modify a policy file, let me warn you of a wrinkle that you may run into IF your applet/java code needs to perform an operation that is authorized by the policy file BUT IS CALLED VIA JavaScript.&lt;br /&gt;&lt;br /&gt;Guess what folks?&amp;nbsp; Java doesn't trust JavaScript any more (and hasn't intermittently over the past 5 years or so - sometimes trusting, sometimes not) so just because you gave your code a valid policy file grant, any code triggered via JavaScript will run as if being run outside the Java codebase (which in a way it is.)&amp;nbsp; This means that you have two options, one of which is not palatable, and the other can break backwards compatibility in your codebase.&lt;br /&gt;&lt;br /&gt;(1)Grant permissions without using the codebase attribute (this is very very bad as your permission change will therefore grant the same permissions to ANY applet that the user runs into.)&lt;br /&gt;&lt;br /&gt;(2)Surround the code that needs permissions privileges (and can be called via JavaScript) with a doPrivileged block.&amp;nbsp; The downside to this is that early versions of Java don't support this functionality; ergo you are (probably) forced to go the trusted/signed applet route (not good for many reasons.)&lt;br /&gt;&lt;br /&gt;Luckily for me, I only need this functionality inside of a tool that is hosting my Java code, so I can put the non 1.1.8 jdk compliant code in my dynamically loaded adapter class that only ships with the offline tool.&lt;br /&gt;&lt;br /&gt;Anyhow, I hope someone else trying to figure this out learns from this.&lt;br /&gt;&lt;br /&gt;If your applet needs policy file permissions and your applet will be called from javascript, you must not only grant the applet the permissions in the appropriate fashion but also surround the code that can be triggered via JavaScript with a doPriveleged block.&amp;nbsp; This is because Java's runtime no longer executes javascript with the permissions levels of the applet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5753169917665137173?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5753169917665137173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/05/f-java-policy-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5753169917665137173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5753169917665137173'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/05/f-java-policy-files.html' title='F**$#&amp;% Java Policy Files'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1500533165772594533</id><published>2011-04-27T09:48:00.000-07:00</published><updated>2011-04-27T09:48:25.414-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COLLADA'/><category scheme='http://www.blogger.com/atom/ns#' term='skeletal animation'/><title type='text'>Skeletal Animation – An overview</title><content type='html'>&lt;style&gt;&lt;!-- /* Font Definitions */@font-face {font-family:"ＭＳ 明朝"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;}@font-face {font-family:"ＭＳ 明朝"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:128; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:fixed; mso-font-signature:1 134676480 16 0 131072 0;}@font-face {font-family:Cambria; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:-536870145 1073743103 0 0 415 0;} /* Style Definitions */p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:Cambria; mso-ascii-font-family:Cambria; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"ＭＳ 明朝"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Cambria; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}.MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-family:Cambria; mso-ascii-font-family:Cambria; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"ＭＳ 明朝"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Cambria; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}@page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;}div.WordSection1 {page:WordSection1;}--&gt;&lt;/style&gt;     &lt;br /&gt;&lt;div class="MsoNormal"&gt;I have been meaning to write a series of blog entries around the basics of skeletal animation for a while now but have been unfortunately too busy to do so – until now, so let’s put our learning hats on!&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;When you need to animate a 3D object in a game or simulation there are 3 primary ways to accomplish the task:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;(1)Hierarchical object animation using keyframes&lt;/div&gt;&lt;div class="MsoNormal"&gt;(2)Vertex Animation&lt;/div&gt;&lt;div class="MsoNormal"&gt;(3)Skeletal Animation&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Hierarchical object animation is when you have multiple meshes which are, typically, arranged in a parent-child fashion through some sort of scenegraph.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Animation data is typically stored as separate translation and rotation (and sometimes scale) components and each object is animated relative to its local frame of reference.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;This works fine for when the object is something like a helicopter and you need to rotate the main and tail rotors; however, when trying to articulate a more complicated and less segmented logical object such as a humanoid character, animation can only occur on the transforms for the object – no vertex data can be changed.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;This means that constructing a human out a mesh hierarchy (with a head mesh, neck mesh, chest mesh, upper arm mesh, et cetera – all the appendages you wish to articulate) leads to block or segmented animation because, for example, the forearm object isn’t really connected to the upper arm so that when it is animated the ends of the objects don’t touch completely and your characters looks like they were created out of blocks.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Interstate 76, an amazing old game which I still occasionally replay just for the cut scenes, was animated in this fashion.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Suffice it to say that since that time animators and game developers have been looking for solutions with better visual fidelity.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Vertex animation is when a mesh is manipulated on a per vertex level by comparing one complete set of the mesh’s vertices against another complete set of the mesh’s vertices (each of the sets of vertices representing a particular keyframe of animation data) and interpolating a position between the two based upon how far between keyframe times the current animation clock is.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;This approach gives the artist the most creative control and the greatest ability to animate; however, it is very memory intensive and requires art content files that are very large since each keyframe of animation is a complete snapshot of the mesh at a given point and time.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Quake’s MD2 file format is an example of vertex animation – another problem with vertex animation is that it is difficult to apply multiple simultaneous animations to a mesh being animated in this fashion.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Since the animation data is a complete snapshot of the mesh each animation stomps all over the previous one that was applied; now, there are solutions to this that modify vertex animation so that you are using ‘relative vertex animation’ data and you can combine and blend somewhat (and save art content file space by discarding unchanging vertices on a given keyframe) but ultimately as your models scale up in complexity, vertices, and polygons this approach has diminishing returns.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Vertex animation is still a very important approach to the non real-time rendering world; however, in the real-time arena it is rarely seen except for extremely complicated situations and sometimes for facial animation or lip synching.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Skeletal animation is a hybrid of the previous two methods.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The mesh representing the object is not manipulated by interpolating between two complete sets of vertex data (as is the case in vertex animation) but instead by moving treating the vertices of the mesh as if they were the ‘skin’ of the mesh and moving the skin to fit over a skeleton.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The skeleton is like the hierarchical object animation from the old days except that the skeleton, just like the skeleton in your body, is a hierarchy of ‘bones’ (sometimes referred to as ‘joints’) and even though you animate the skeleton, you never actually bother to draw it.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;This is because we only want to animate the skeleton because we’re going to force the skin to go along with it.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; Half-Life is an early example of a game that used skeletal animation.&amp;nbsp; &lt;/span&gt;Why don’t we simply animate the skin this way?&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;For all the reasons why we just explained that vertex animation is no longer in favor in the real-time world.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;By only storing the rotation and translation (potentially other factors as well) data for each bone for a keyframe of animation we save tons of space in our art content files, and we gain the ability to simply combine animations and blend between them.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;We gain performance advantages over complicated relative vertex animation systems when the model’s topology scales (more polygons, more vertices), and we gain the ability to add FK/IK capabilities into our system that would be virtually impossible with vertex animation (any system I can imagine to support this via vertex animation would ultimately require you emulating a skeletal system.)&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So, now that I have explained the reasoning why I, and many others, use skeletal animation, let’s start explaining how it works.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;The good news is that skeletal animation is actually VERY simple.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The bad news is that it usually either partially explained or people use different terms for differing things.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;I will do my best to explain it as simply and yet thoroughly as possible.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;The other bad news is because the world is an imperfect place, obtaining an example of skeletal animation data you can use can be difficult because you’re just now learning how it is supposed to work so it can be difficult to discern why art content produced by your artist doesn’t seem to work (is it you?&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Is it the artist?&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Is it his/her exporter?&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Et cetera.)&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Luckily, I will provide you with an example COLLADA XML file (*.dae) that has a walk animation included.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;We will use the COLLADA format because there are moderately usable exporters for all the major art pipeline tools (Maya/Max/XSi) and your art guy/gal will most likely have experience with one of those tools.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;So, ultimately, when this series of posts is over, you’ll be able to import a COLLADA XML file, pull out the mesh geometry, pull out the skeleton, and pull out the animation data, then play it back in your application.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1500533165772594533?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1500533165772594533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/04/skeletal-animation-overview.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1500533165772594533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1500533165772594533'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/04/skeletal-animation-overview.html' title='Skeletal Animation – An overview'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-4596425086749169026</id><published>2011-03-06T09:26:00.000-08:00</published><updated>2011-03-06T09:26:41.269-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7 64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='Samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='Captivate'/><category scheme='http://www.blogger.com/atom/ns#' term='Froyo'/><category scheme='http://www.blogger.com/atom/ns#' term='Kies Mini'/><category scheme='http://www.blogger.com/atom/ns#' term='Android 2.2'/><title type='text'>Windows 7 64-bit and Samsung Kies Mini</title><content type='html'>I was shocked to find out that AT&amp;amp;T and Samsung had finally provided a Froyo (Android 2.2) update for the Captivate Galaxy S phone.&amp;nbsp; All I had to do was download Samsung's Kies Mini firmware updating application (the version available was actually an AT&amp;amp;T modified stripped down version) and setup my phone correctly, backup critical data and press 'Upgrade.'&lt;br /&gt;&lt;br /&gt;Of course, it never works out that way in the real world but I must admit that even a jaded and cynical software engineer like myself was disgusted and disappointed when every single time I connected my Captivate to my computer with Kies running, the Kies application would identify the phone and then promptly crash.&lt;br /&gt;&lt;br /&gt;I Googled, Googled some more, tried compatibility settings, running as Administrator, I even tried using a Windows XP virtual machine in case it was a 32-bit issue - sadly Virtual PC 2007 (what I use on Windows 7) doesn't pass USB to a VM.&lt;br /&gt;&lt;br /&gt;In any case, I was getting more and more frustrated and was ready to quit when I ran across an obscure tiny little message on some news server somewhere where a guy mentions - "Oh, yeah, and if you have IE9 installed on your machine, take it off."&lt;br /&gt;&lt;br /&gt;Well, I just happened to have an IE9 release candidate installed.&amp;nbsp; How that crashed Kies escapes me since you'd have to be a pretty crap software engineer to have not tested your Windows only application, which you are releasing to MILLIONS of people to use, against IE6, IE7, IE8, and IE9 - but hey, Samsung are weird that way.&amp;nbsp; They make some wonderful things and somehow drop the ball on the really trivially simple things.&lt;br /&gt;&lt;br /&gt;Long story shorter, uninstalled IE9, ran Kies Mini, phone showed up, chose 'Upgrade', a few minutes later I'm running flash on my Android phone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-4596425086749169026?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/4596425086749169026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/03/windows-7-64-bit-and-samsung-kies-mini.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4596425086749169026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4596425086749169026'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/03/windows-7-64-bit-and-samsung-kies-mini.html' title='Windows 7 64-bit and Samsung Kies Mini'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-6285512590347863555</id><published>2011-03-04T15:25:00.000-08:00</published><updated>2011-03-04T15:27:57.753-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Finder'/><category scheme='http://www.blogger.com/atom/ns#' term='AppleScript'/><title type='text'>AppleScript to add a 'new file' capability to Finder</title><content type='html'>Another convenience function you may wish to add to a button in your Finder toolbar is a 'new file' button that will deposit a blank file named 'NewFile' in the current Finder window directory.  It also auto increments a counter if needed to ensure the new file doesn't overwrite an existing file.  The code is below:&lt;br /&gt;&lt;br /&gt;tell application "Finder"&lt;br /&gt;   &lt;br /&gt;    #Create filename (avoid overwriting)&lt;br /&gt;    set current_path to (POSIX path of (the folder of the front window as text))&lt;br /&gt;    set good_filename to false&lt;br /&gt;    set loop_count to 0&lt;br /&gt;   &lt;br /&gt;    repeat while good_filename is false&lt;br /&gt;       &lt;br /&gt;        if loop_count is equal to 0 then&lt;br /&gt;            set NewFileName to (current_path &amp;amp; "/NewFile")&lt;br /&gt;        else&lt;br /&gt;            set NewFileName to (current_path &amp;amp; "/NewFile" &amp;amp; loop_count)&lt;br /&gt;        end if&lt;br /&gt;       &lt;br /&gt;        if exists NewFileName as POSIX file then&lt;br /&gt;        else&lt;br /&gt;            do shell script "touch " &amp;amp; NewFileName&lt;br /&gt;            set good_filename to true&lt;br /&gt;        end if&lt;br /&gt;       &lt;br /&gt;        set loop_count to (loop_count + 1)&lt;br /&gt;       &lt;br /&gt;    end repeat&lt;br /&gt;   &lt;br /&gt;end tell&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-6285512590347863555?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/6285512590347863555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/03/applescript-to-add-new-file-capability.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6285512590347863555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6285512590347863555'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/03/applescript-to-add-new-file-capability.html' title='AppleScript to add a &apos;new file&apos; capability to Finder'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1267412254337202896</id><published>2011-03-04T05:41:00.000-08:00</published><updated>2011-03-04T05:46:15.080-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Finder'/><title type='text'>Add full path to title bar of Finder</title><content type='html'>Very simple, from the terminal:&lt;br /&gt;&lt;br /&gt;defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES&lt;br /&gt;&lt;br /&gt;Then in the terminal, to affect the change in your open Finder windows:&lt;br /&gt;&lt;br /&gt;killall Finder&lt;br /&gt;&lt;br /&gt;To revert, change YES to NO&lt;br /&gt;&lt;br /&gt;(Btw, you can have a more UI oriented path shown by choosing View|Show Path Bar for the Finder but I find it easier to view the path in the title bar since I spend a lot of time in *nix)&lt;br /&gt;&lt;br /&gt;This works in 10.6.6 but I'm not sure what other OSX versions it works on.&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1267412254337202896?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1267412254337202896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/03/add-full-path-to-title-bar-of-finder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1267412254337202896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1267412254337202896'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/03/add-full-path-to-title-bar-of-finder.html' title='Add full path to title bar of Finder'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-9046797293029750689</id><published>2011-03-03T06:25:00.000-08:00</published><updated>2011-03-03T06:54:47.614-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Finder'/><title type='text'>Very cool feature of OSX to make up for uncool features...</title><content type='html'>The Finder in OSX is okay for the most part; however, Apple can be a strange mix of the 'well designed UI' approach and the 'keyboard shortcuts rule' approach.  Often these approaches complement each other well - sometimes they do not.&lt;br /&gt;&lt;br /&gt;One of the things about the Finder I don't like is that there's no path bar or button for simply letting you designate a path.  I discovered that there is a 'Go To Folder' shortcut (command-shift-g) which proffers a little dialog box that I can do this with but there's no integrated path bar.&lt;br /&gt;&lt;br /&gt;This is certainly an acceptable (mostly) alternative, but I really don't want to have to remember another intermittently used keyboard shortcut (I have several IDE's, Emacs, and different operating systems worth of shortcuts to remember as well, so one less would be nice.)&lt;br /&gt;&lt;br /&gt;It turns out, very nicely, that you can add custom buttons to the Finder window simply by dragging an application onto the Finder's toolbar.  So, I created a little AppleScript application that simply emitted command-shift-g to most recent finder window, and I gave it an icon.  Now my finder window has a little terminal icon (I'll replace the icon later when I have more time) where I can click and it pops up a path dialog to change directories as seen below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/--pSpp6pDpWc/TW-m-DuhdcI/AAAAAAAAAGo/QAqp9wFq74k/s1600/Finder.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://3.bp.blogspot.com/--pSpp6pDpWc/TW-m-DuhdcI/AAAAAAAAAGo/QAqp9wFq74k/s400/Finder.png" alt="" id="BLOGGER_PHOTO_ID_5579862048417871298" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It is the little square black icon just to the right of middle.&lt;br /&gt;&lt;br /&gt;Now, to do the same thing you need to open the AppleScript Editor and add the following text to your empty script:&lt;br /&gt;&lt;br /&gt;tell application "Finder"&lt;br /&gt;   activate&lt;br /&gt;   tell application "System Events" to keystroke "g" using {command down, shift down}&lt;br /&gt;end tell&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-K75uvceblF4/TW-otiyjtwI/AAAAAAAAAGw/lfLu2pjcOrg/s1600/ScriptEditor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 254px;" src="http://3.bp.blogspot.com/-K75uvceblF4/TW-otiyjtwI/AAAAAAAAAGw/lfLu2pjcOrg/s400/ScriptEditor.png" alt="" id="BLOGGER_PHOTO_ID_5579863963721774850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Open a Finder window if one isn't already open and then tell the AppleScript Editor to run the script to verify that it is functioning as expected.&lt;br /&gt;&lt;br /&gt;You now want to save the script as an Application - I saved my script into my Applications folder accordingly (you can do what you like.)&lt;br /&gt;&lt;br /&gt;Now, you can skip this step if you wish, but I wanted a custom icon (instead of the default script icon) as my button in the Finder window so I found an image that I wanted to use (after looking for about 8 seconds) and opened it.  I then selected the portion of the image I wanted and chose 'Copy' (you can use the preview window for this or some other image viewing/editing application.)  This placed the image I wanted to use on the clipboard.&lt;br /&gt;&lt;br /&gt;In order to change the icon on OSX 10.6.6 I then located the script application and brought up the 'Get Info' dialog on it.  I then clicked on the application's icon in the upper left hand corner of the Get Info dialog so that it was selected, I then pasted the clipboard contents which deposited the image into the icon.&lt;br /&gt;&lt;br /&gt;The last step is to simply open a Finder window and then drag the application from where you have located it onto the Finder's toolbar and it should appear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-9046797293029750689?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/9046797293029750689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/03/very-cool-feature-of-osx-to-make-up-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/9046797293029750689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/9046797293029750689'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/03/very-cool-feature-of-osx-to-make-up-for.html' title='Very cool feature of OSX to make up for uncool features...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--pSpp6pDpWc/TW-m-DuhdcI/AAAAAAAAAGo/QAqp9wFq74k/s72-c/Finder.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5209304845850732723</id><published>2011-02-28T06:18:00.001-08:00</published><updated>2011-02-28T06:21:45.179-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='apachectl'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='osx 10.6.5'/><title type='text'>OSX 10.6.5 update breaks apachectl script</title><content type='html'>If you're wanting to manipulate Apache via the apachectl script, OSX 10.6.5 apparently changed a line in the script in such a fashion that it no longer functions.&lt;br /&gt;&lt;br /&gt;In the interest of brevity I simply recommend what others have suggested, change the line:&lt;br /&gt;&lt;br /&gt;ULIMIT_MAX_FILES="ulimit -S -n 'ulimit -H -n'"&lt;br /&gt;&lt;br /&gt;To simply be:&lt;br /&gt;&lt;br /&gt;ULIMIT_MAX_FILES=""&lt;br /&gt;&lt;br /&gt;If you need greater control of the directive, knock yourself out :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5209304845850732723?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5209304845850732723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/02/osx-1065-update-breaks-apachectl-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5209304845850732723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5209304845850732723'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/02/osx-1065-update-breaks-apachectl-script.html' title='OSX 10.6.5 update breaks apachectl script'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-4004291822471898127</id><published>2011-02-25T13:09:00.000-08:00</published><updated>2011-02-25T13:16:31.844-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Parallels'/><title type='text'>Parallels performance tests</title><content type='html'>I spent part of my day evaluating performance for Windows 7 Ultimate 64-bit under Parallels on Mac OSX Snow Leopard.&lt;br /&gt;&lt;br /&gt;Disheartening is the way I would put it.  Thinks work well for the most part, but in other ways it falls short.&lt;br /&gt;&lt;br /&gt;I really was expecting better results than a 50% performance hit compiling with VS 2010 Professional. Clean, Rebuild of 27 projects as Win32 Debug in the solution, roughly 400,000 lines of C++ code = 4 minutes 18 seconds on average.  Under Windows 7 native that time was cut to an average of 1 minute 50 seconds.  No concurrent builds allowed.&lt;br /&gt;&lt;br /&gt;The virtual machine running off the bootcamp partition is allocated 6 processors and 8GB of memory.  The native machine has 12 cores with 24 hardware threads (Parallels doesn't seem to provide hardware threads to VM as I allocate 6 cores and 6 procs show up in the Task Manager [you would think 12 would.])  This is why I expected a performance drop, but not a more than 100% improvement under the native OS.&lt;br /&gt;&lt;br /&gt;Anyhow, still very impressive software, and it is nice to have OSX and Win 7 running side by side.  I'm probably doing something wrong anyhow (historical precedent would suggest...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-4004291822471898127?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/4004291822471898127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/02/parallels-performance-tests.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4004291822471898127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4004291822471898127'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/02/parallels-performance-tests.html' title='Parallels performance tests'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8578186636032284363</id><published>2011-02-24T18:39:00.000-08:00</published><updated>2011-02-24T19:27:06.579-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gptsync'/><category scheme='http://www.blogger.com/atom/ns#' term='reFIT'/><category scheme='http://www.blogger.com/atom/ns#' term='Parallels'/><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='VMWare Fusion'/><category scheme='http://www.blogger.com/atom/ns#' term='Boot Camp'/><title type='text'>Parallels and PRL_ERR_DISK_GPT_MBR_NOT_EQUAL</title><content type='html'>This should help out some poor b**tard like me...  I installed Parallels today to give it a spin because I heard that you can now run a virtual machine directly off your Boot Camp partition (ergo I can run pure Windows like I need to in order to properly test software, and I can run the very same partition as a virtual machine in OSX.)&lt;br /&gt;&lt;br /&gt;Well, as usual, I ran into some hiccups; however, this time the hiccups were from something I'd done (but still shouldn't have been hiccups really.&lt;br /&gt;&lt;br /&gt;For some reason, when I tried to get Parallels to use my Boot Camp partition, I was getting a 'cannot configure the boot camp partition' error and when I looked at the details I received a very mysterious PRL_ERR_DISK_GPT_MBR_NOT_EQUAL error.&lt;br /&gt;&lt;br /&gt;Looking at this error suggests there some sort of problem with the GPT and the MBR (if you don't know what these are you aren't ready for this post, wikipedia is your friend) where something was not what someone expected.&lt;br /&gt;&lt;br /&gt;Well, I know that after creating my Boot Camp partition in OSX that I'd messed around with that partition space in Windows 7 to create and extended partition by shrinking the Boot Camp partition.  OSX didn't seem to care about this and was quite happy to mount the partitions for read only access.  Well, it turns out that Parallels cares about this a lot and when it looks at the GPT to see what the MBR should be it throws up because the GPT states that the end of the Boot Camp partition is something it is not.&lt;br /&gt;&lt;br /&gt;Sooooo...  Long story short, it turns out I'm lucky that I'm using reFIT to handle my multi-boot system because when reFIT starts up you can run a little utility called gptsync (choose 'run partition tool' from the reFIT boot menu) which apparently will square up what is stated in the GPT with what is stated in the MBR (technically it modifies the MBR so be careful.)&lt;br /&gt;&lt;br /&gt;BTW, gptsync doesn't handle extended partitions so I had to move all of that data onto the main Boot Camp partition and delete the partition then re-extend the Boot Camp partition over that space so it resembled what OSX remembered from earlier - then I could run gptsync.&lt;br /&gt;&lt;br /&gt;Booting OSX and running Parallels at this point worked fine.  As an aside, I was wondering if this was a Parallels limitation but it turned out to be a problem (again with virtually no intelligent description) for VMWare's Fusion 3.1 as well.&lt;br /&gt;&lt;br /&gt;Hope this helps somebody! :)&lt;br /&gt;&lt;br /&gt;UPDATE: Don't forget, both in VMWare Fusion and Parallels, to delete any previous virtual machine you had tried to make using that Boot Camp partition because it has erroneous GPT data - start with a fresh virtual machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8578186636032284363?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8578186636032284363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/02/parallels-and-prlerrdiskgptmbrnotequal.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8578186636032284363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8578186636032284363'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/02/parallels-and-prlerrdiskgptmbrnotequal.html' title='Parallels and PRL_ERR_DISK_GPT_MBR_NOT_EQUAL'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-376819357405895722</id><published>2011-02-19T06:16:00.000-08:00</published><updated>2011-02-19T06:17:55.927-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='key bindings'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Home and End keys in most editors for OSX</title><content type='html'>http://www.starryhope.com/tech/apple/2006/keyfixer/&lt;br /&gt;&lt;br /&gt;God bless that guy, I really didn't want to create a custom keybinding dictionary.  Works for my Ergonomic 7000.  'Nuff said.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-376819357405895722?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/376819357405895722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/02/home-and-end-keys-in-most-editors-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/376819357405895722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/376819357405895722'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/02/home-and-end-keys-in-most-editors-for.html' title='Home and End keys in most editors for OSX'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8852569331869328824</id><published>2011-02-16T13:58:00.001-08:00</published><updated>2011-02-16T14:02:20.087-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='F12'/><category scheme='http://www.blogger.com/atom/ns#' term='Eject'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>If your non-Apple keyboard won't eject using F12...</title><content type='html'>...make sure that if your keyboard preferences (either in Apple's preferences or a preference list created by keyboard install software on your machine) offer a keyboard type of 'Generic', try setting it to this value.&lt;br /&gt;&lt;br /&gt;My new Microsoft Ergonomic 7000 Wireless was set to ANSI for some reason after installation of the software on OSX and F12 would bring up dashboard (like it should) but would not trigger the open/close tray command when depressed longer (as it was supposed to.)&lt;br /&gt;&lt;br /&gt;Switching the setting from 'Ansi' to 'Generic' solved this for me (for this keyboard the value was under 'Options' in the system preferences-&gt;Microsoft Keyboard.)&lt;br /&gt;&lt;br /&gt;Hope this helps someone someday :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8852569331869328824?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8852569331869328824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/02/if-your-non-apple-keyboard-wont-eject.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8852569331869328824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8852569331869328824'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/02/if-your-non-apple-keyboard-wont-eject.html' title='If your non-Apple keyboard won&apos;t eject using F12...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2430953113485653169</id><published>2011-02-07T15:59:00.000-08:00</published><updated>2011-02-07T16:04:19.301-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crApple'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac Pro'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Bought a new crApple Mac Pro for work...</title><content type='html'>...the other day.&lt;br /&gt;&lt;br /&gt;Un-freaking-beleivable how ridiculously stupidly overpriced the thing is.  Oh, don't get me wrong, it's sexy, sleek, and oh so very shiny with 12 cores, and multiple terabytes of drives (et cetera); but, how on earth are there people so stupid that they actually buy memory from crApple?  24GB of memory (you start with 6GB) from Apple is more than $2100.  You can buy 24GB from Crucial for about $420 and then you get to keep 2 of the 1GB sticks that crApple gives you by default for a total of 26GB, plus you get save $1700 (think of all the iPads, iPhones, iPods, iTouches, iWhatevers you could buy with that.)&lt;br /&gt;&lt;br /&gt;I love the Woz, hate the Jobs...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2430953113485653169?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2430953113485653169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2011/02/bought-new-crapple-mac-pro-for-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2430953113485653169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2430953113485653169'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2011/02/bought-new-crapple-mac-pro-for-work.html' title='Bought a new crApple Mac Pro for work...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-6888558370793807300</id><published>2010-11-29T18:09:00.000-08:00</published><updated>2011-02-07T15:58:48.716-08:00</updated><title type='text'>COLLADA rant</title><content type='html'>Ok, having added OgreXML support, and our own personal skeletal animation file format support, I decided to add COLLADA support to our skeletal animation system because art puke types are always talking about how great it is.&lt;br /&gt;&lt;br /&gt;Now, COLLADA is a good idea that has been horribly HORRIBLY implemented.  It is the very definition of needlessly complex and convoluted, the documentation is absolutely terrible, and to top it off, none of the exporters actually support the spec - only parts of it AND THEY SUPPORT IT DIFFERENTLY DEPENDING UPON THE TOOL USED.  WTF?  LOL.&lt;br /&gt;&lt;br /&gt;Anyhow, I stumbled upon a real doozy this past week when supporting the 'library_animations' element.  I came across a sample file with baked matrices (meaning that the rotations/translations/scales/et al. were all baked down into representation by a single matrix) that did something so bizarre I couldn't understand it for about 4 hours even though it was staring me in the face and even then I said "it can't be...  It just can't be."  Oh, but I was wrong, it was.&lt;br /&gt;&lt;br /&gt;Apparently, COLLADA allows (and some exporters do this) animation data for a given set of keyframes to be exported not just as a giant clump of keyframes (all animations globbed together) but stored on an individual matrix element basis.  I know, sound confusing/bizarre and you probably don't know what I mean by that so I will try to explain since I don't know a very concise way of explaining something that strikes me as so batsh*t crazy that I cannot fathom how some ultramaroon implemented this or though it was a good idea (maybe someone can enlighten me on this...)&lt;br /&gt;&lt;br /&gt;What I mean is that even though COLLADA can already bizarrely store all animations lumped together as disassociated keyframes on a per bone basis (strange but I can understand why they might want to do this) storing a set of 16 floats per keyframe (representing a 4x4 matrix) - there is another format to the storage of this data that creates a child XML node FOR EVERY ELEMENT OF THAT 4X4 MATRIX AND STORES EACH KEYFRAMES VALUE FOR THAT PARTICULAR ELEMENT IN A FLOAT ARRAY.&lt;br /&gt;&lt;br /&gt;If that still isn't clear (and probably wouldn't be for me because I'd be thinking - "no way, I'm not reading that correctly..." - I mean there's an actual XML element under:&lt;br /&gt;&lt;br /&gt;&amp;lt;library_animations&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;animation id="MySkeleton_Root"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;source id="MySkeleton_transform_0__0_-output"&amp;gt;&lt;br /&gt;&lt;br /&gt;If the file has, say, 600 keyframes of animation in it, there will be (no sh*t) 600 floats in a float array under that source ID that are meant to be stuff in 600 different 4x4 matrices in the position MyMatrix[0][0]...&lt;br /&gt;&lt;br /&gt;It strikes me as absolutely crazy as a loon to see 16 entries under a given bone with each entry holding a huge float array representing an individual element of a 4x4 matrix.  WTF?&lt;br /&gt;&lt;br /&gt;Why, for the love of all things holy and good, would you not simply store the damn thing as a float array of 16 * 600 floats under a single element?  The matrix is baked - you can't extrapolate the original DCC toolset translations and orientations (although you can pull translations and orientations out you have no idea whether they're the exact ones used by the tool to generate the matrix) so WTF?&lt;br /&gt;&lt;br /&gt;Sorry, that was just the cherry on the cake of my dealings with COLLADA, the amazing file format that seems to be dying a slow death at the hands of Khronos (who I like, but man is this a weird thing they've got here.)&lt;br /&gt;&lt;br /&gt;*** END OF RANT ***&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-6888558370793807300?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/6888558370793807300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/11/collada-rant.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6888558370793807300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6888558370793807300'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/11/collada-rant.html' title='COLLADA rant'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-3624246362132957638</id><published>2010-09-30T06:04:00.000-07:00</published><updated>2010-09-30T06:14:29.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='skinning'/><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='bones'/><category scheme='http://www.blogger.com/atom/ns#' term='skeletal animation'/><title type='text'>It is ridiculous that there seem to be no reasonable explanations of skeletal animation</title><content type='html'>...and that includes in books (there's a book devoted to it but it's a little horky [props to Nathan for the word], and the only other book I've seen on the topic depends on DirectX code to handle many things.)&lt;br /&gt;&lt;br /&gt;I'm going to put one up on this blog shortly as I ran into someone looking for this information and I was shocked to find that Googling was not very helpful as there are bits and pieces of the information all over the place.  It would be very helpful, I presume, for someone to post everything you really need to do from importing file formats (I'll probably explain OgreXML and maybe Collada as well), to blending vertex and skeletal animation, to skinning.&lt;br /&gt;&lt;br /&gt;I know I wish someone had done that for me back in 1999.  Hopefully I'll get it up this year.  Probably a short series of posts starting with the background, the terminology (lots of terms for the same things [i.e. Bind Pose/Reference Pose, Palette Matrix/Inverse Model Space Matrix, et cetera...]&lt;br /&gt;&lt;br /&gt;It will all be CPU based skinning so that it applies potentially to any language.  Hmmm...  I wonder if anyone has ever put a skeletal animation system in Flash before (I hate ActionScript/Flash programming, but that might be interesting.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-3624246362132957638?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/3624246362132957638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/09/it-is-ridiculous-that-there-seem-to-be.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3624246362132957638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3624246362132957638'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/09/it-is-ridiculous-that-there-seem-to-be.html' title='It is ridiculous that there seem to be no reasonable explanations of skeletal animation'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5868527666435960450</id><published>2010-03-10T04:16:00.001-08:00</published><updated>2010-03-10T04:17:43.124-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nerdilicous'/><title type='text'>Nerd score...</title><content type='html'>It's certainly obvious how to game this thing but an honest evaluation led to:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nerdtests.com/ft_nq.php"&gt;&lt;br /&gt;&lt;img src="http://www.nerdtests.com/images/ft/nq/9594728bc3.gif" alt="I am nerdier than 84% of all people. Are you a nerd? Click here to take the Nerd Test, get geeky images and jokes, and talk on the nerd forum!"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm nerdier than I thought...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5868527666435960450?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5868527666435960450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/03/nerd-score.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5868527666435960450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5868527666435960450'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/03/nerd-score.html' title='Nerd score...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5252749055063721881</id><published>2010-01-17T20:54:00.000-08:00</published><updated>2010-01-17T21:00:08.392-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kate'/><category scheme='http://www.blogger.com/atom/ns#' term='lemonade'/><title type='text'>Lemonade...  That cool refreshing drink...</title><content type='html'>After the fast last week, I didn't think I'd be hot for lemonade anytime soon; however, for some reason I had the urge for a glass of real lemonade today.  I'd never made 'real' lemonade before but since I have some leftover lemons, I went ahead and took a tall glass (probably a little more than 20 fl. oz.) and put the juice from a good sized lemon in there, filled it with cold water and added a heaping teaspoon of suger.  Stirred.  Drank.  Yeow! Sour.  Ok, more sugar.  Two more heaping teaspoons full.  Stir for a few minutes to dissolve that much sugar into cold water.  Taste.  Delicious!&lt;br /&gt;&lt;br /&gt;My daughter Kate wandered over and asked for a taste and since it was still really tart even though it was also sweet - I figured she'd make a face like 'Daddy you should not have given me that' but instead she started chugging.  She then suggested that I help her (by picking her up and standing her on the kitchen counter) obtain the drinking cup of her choice and she would allow me to fill it with lemonade for her.  She's very thoughtful that way.  5 minutes later, she was back for more lemonade.  So, I had a little bit of tasty tasty lemonade today, and Kate had the rest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5252749055063721881?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5252749055063721881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-that-cool-refreshing-drink.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5252749055063721881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5252749055063721881'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-that-cool-refreshing-drink.html' title='Lemonade...  That cool refreshing drink...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-3680812855944633925</id><published>2010-01-17T20:40:00.000-08:00</published><updated>2010-01-17T20:53:07.053-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='IE8'/><category scheme='http://www.blogger.com/atom/ns#' term='JRE'/><title type='text'>Java JRE, IE8, and 64-bit systems...</title><content type='html'>I just put Windows 7 Ultimate on my HP QuadCore laptop, and after downloading and installing the latest 64-bit JRE from SUN, I found that it didn't appear to actually install properly.  Applets wouldn't load, but java showed up through the command line.  So, I went to 'manage add-ons' in IE8, and saw only 1 of the usual 2 SUN plug-ins.  I figured I'd just had a screwy install, so I removed, re-downloaded (you never know) and re-installed.  Bang, same problem.&lt;br /&gt;&lt;br /&gt;At this point, I usually slow down and ensure I'm not being a complete idiot about something and I carefully evaluate my actions.  Yes, this is Windows 7 Ultimate x64, yes I downloaded the x64 JRE 6, update 17.  Ok, time to google.  People having problems with this?  After sifting through the inevitable mountains of detritus trying to find a nugget of useful information (should I have used Bing? ;)) I ran across a tiny little comment in forum about 17 posts down saying "Make sure it's IE8 x64 you're using..."  Click.  No way, I thought.  I could understand and appreciate why Microsoft would install two versions of IE8 on an x64 system, but I figured there's no freakin' way the default IE to be used would be the 32-bit version, right?  Wrong.&lt;br /&gt;&lt;br /&gt;Turns out that that the default IE8 that shows up 'pinned' to the taskbar is the 32-bit version.  Jerkoffs...  So, 30 seconds later I had both added a quick launch toolbar to the tastbar (some idiot decided to remove this from Windows 7) and replaced 'IE8' with 'IE8 (x64).'  Bingo applets showed up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-3680812855944633925?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/3680812855944633925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/java-jre-ie8-and-64-bit-systems.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3680812855944633925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3680812855944633925'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/java-jre-ie8-and-64-bit-systems.html' title='Java JRE, IE8, and 64-bit systems...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-3334794285836429063</id><published>2010-01-15T15:51:00.000-08:00</published><updated>2010-01-15T15:55:52.222-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='64-bit'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='32-bit'/><title type='text'>'Bad image exception" running C# code on Windows 7</title><content type='html'>We just ran into this problem with one of our tools when someone ran a C# application on Windows 7 (although it isn't supported just yet on that platform.)  Turns out that the issue was related to a 64-bit Windows 7 .NET installation loading and referencing 32-bit modules.  If everything used in the application was 32-bit, it would be fine; but, you can't mix and match.  Since this application makes use of modules hosted by the operating system, the 64-bit modules load and the 32-bit application image tries to map the 64-bit image for usage.  BLAM...&lt;br /&gt;&lt;br /&gt;This article describes the problem:&lt;br /&gt;&lt;br /&gt;http://www.gcn.com/Articles/2009/07/09/5-Tips-for-Developing-with-64-Bit-Windows.aspx&lt;br /&gt;&lt;br /&gt;Looks like a recompilation is due...  Great, I just love maintaining two images and builds for the same tool.&lt;/sarcasm&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-3334794285836429063?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/3334794285836429063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/bad-image-exception-running-c-code-on.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3334794285836429063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3334794285836429063'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/bad-image-exception-running-c-code-on.html' title='&apos;Bad image exception&quot; running C# code on Windows 7'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-7502892997230649009</id><published>2010-01-15T07:08:00.000-08:00</published><updated>2010-01-15T07:11:53.197-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Comics'/><category scheme='http://www.blogger.com/atom/ns#' term='Gary Larson'/><category scheme='http://www.blogger.com/atom/ns#' term='The Far Side'/><title type='text'>Who doesn't miss Gary Larson?</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_RKtXwakvcTw/S1CFmedqOhI/AAAAAAAAAGQ/_TFQZ9lG9QQ/s1600-h/Far+Side+Snake.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 366px;" src="http://2.bp.blogspot.com/_RKtXwakvcTw/S1CFmedqOhI/AAAAAAAAAGQ/_TFQZ9lG9QQ/s400/Far+Side+Snake.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5426984447040436754" /&gt;&lt;/a&gt;&lt;br /&gt;Some of the funniest things I've ever seen came from his hands...  Someone sent me this picture today and I thought I'd share it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-7502892997230649009?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/7502892997230649009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/who-doesnt-miss-gary-larson.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7502892997230649009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7502892997230649009'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/who-doesnt-miss-gary-larson.html' title='Who doesn&apos;t miss Gary Larson?'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RKtXwakvcTw/S1CFmedqOhI/AAAAAAAAAGQ/_TFQZ9lG9QQ/s72-c/Far+Side+Snake.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2088121006689711705</id><published>2010-01-14T09:02:00.000-08:00</published><updated>2010-01-14T09:26:25.115-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cleansing'/><category scheme='http://www.blogger.com/atom/ns#' term='lemonade fast'/><title type='text'>Lemonade Fast - Day #5</title><content type='html'>It's over!  A lot of lemons, maples syrup, distilled water, and 10 pounds later...&lt;br /&gt;&lt;br /&gt;This fast is really boring, but quite effective especially if you need to drop weight quickly for some reason (but I don't think this is a very wise way to lose weight as it very likely stresses your body unnecessarily.)&lt;br /&gt;&lt;br /&gt;I didn't do this fast for dieting purposes but I must say that compared to diets I've used in the past, this approach had no headaches, and after the first day the hunger wasn't too bad.  It cleans you out too :).&lt;br /&gt;&lt;br /&gt;Jake informed me that he had some watered down oatmeal this morning and his stomach is unsure as to how to react; so, I'll wait 'til later this afternoon to probably introduce solids again.&lt;br /&gt;&lt;br /&gt;I think a smoking hot Lamb Vindalo is probably not a good choice.  Maybe a bean burrito with nothing else in it.&lt;br /&gt;&lt;br /&gt;Let's see how much weight comes back on over the next two days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2088121006689711705?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2088121006689711705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2088121006689711705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2088121006689711705'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-5.html' title='Lemonade Fast - Day #5'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1268702978574550886</id><published>2010-01-13T16:01:00.000-08:00</published><updated>2010-01-13T16:09:30.301-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cleansing'/><category scheme='http://www.blogger.com/atom/ns#' term='lemonade fast'/><title type='text'>Lemonade Fast - Day #4</title><content type='html'>Okay, day four has arrived.&lt;br /&gt;&lt;br /&gt;Not unusually tired.  Have been sleeping really well since the fast started.  No headaches to report.  Hunger is a little stronger, but not too bad.  Salt water is becoming more revolting instead of less (I presumed it would get easier.)&lt;br /&gt;So...&lt;br /&gt;&lt;br /&gt;Salt water flush - check.&lt;br /&gt;Salt water effectiveness - check.&lt;br /&gt;Ability to smell the neighbors two houses over cooking bacon when I took the dogs out this morning - check.&lt;br /&gt;Actual string of drool slipping temporarily unnoticed from my mouth when sitting with the kids at dinner tonight - check.&lt;br /&gt;Sheer and utter boredom with this fast - check...&lt;br /&gt;&lt;br /&gt;God/Allah/YHWH - be praised, Jake has informed me that he was very tired today and may make tomorrow his last day on the fast.  I will, of course, remain on the fast approximately 8 seconds longer and then dive headfirst into the refridgerator.  Should Jake change his mind, I may, instead, cry myself to sleep tomorrow night dreaming of a Johnny's double cheese/double pepperoni.  Shit.  I just made drool fall out of my mouth and onto my desk.&lt;br /&gt;&lt;br /&gt;Pray with me people that Jake remains stout of heart in his quest to end the fast tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1268702978574550886?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1268702978574550886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1268702978574550886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1268702978574550886'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-4.html' title='Lemonade Fast - Day #4'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-13457200025069516</id><published>2010-01-12T14:15:00.000-08:00</published><updated>2010-01-12T14:42:19.908-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cleansing'/><category scheme='http://www.blogger.com/atom/ns#' term='lemonade fast'/><title type='text'>Lemonade Fast - Day #3</title><content type='html'>Alright, day 3, time to blog a bit (it's 5:15PM and I plan to update around 3PM usually if I can) - what can I say?  I must be physiologically strange.  I'm not particularly hungry.  I'm hungry sort of like you are maybe an hour before lunchtime.  Just a slight feeling of 'empty belliedness-ness.'&lt;br /&gt;&lt;br /&gt;The salt water flush still works as advertised.  Another 7 trips (in two hours this time.)&lt;br /&gt;&lt;br /&gt;I did realize that the drink tasted vile yesterday because the second bottle of syrup I used has a terrible smell and taste akin to maple syrup mixed with soy sauce.  I switched back to the syrup I used on day 1 and have been much happier with the results.&lt;br /&gt;&lt;br /&gt;I have lost about 8 pounds so far.  I don't feel particularly tired; perhaps a tiny bit tired.  No headaches - which is what I really was worried about.&lt;br /&gt;&lt;br /&gt;Although I don't *feel* particularly hungry, I do find myself thinking about food a fair amount, but nothing specific.  I made my youngest daughter's lunch today (my wife didn't realize she was being cruel by calling and asking me to... Or maybe she did...  Hmmm...) and the smell of her cut up grilled hot dog, fresh french fries, and apple slices was enticing.&lt;br /&gt;&lt;br /&gt;Another thing I was expecting to happen, but hasn't, is for the cold to affect me more than usual.  I'm normally a very warm person (unlike my friend Jeff who shows up as 'background' when viewed through an IR camera - really) and I put off a lot of waste BTUs, so when I diet I tend to actual get a little cold.  This has not, as of yet, begun to happen.&lt;br /&gt;&lt;br /&gt;Anywho, back to finish the workday and dream about what I shall eat first 7 days from today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-13457200025069516?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/13457200025069516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/13457200025069516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/13457200025069516'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-3.html' title='Lemonade Fast - Day #3'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-6456520207757371333</id><published>2010-01-11T12:17:00.000-08:00</published><updated>2010-01-11T12:28:40.357-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cleansing'/><category scheme='http://www.blogger.com/atom/ns#' term='lemonade fast'/><title type='text'>Lemonade Fast - Day #2</title><content type='html'>Hmmm...  I am caught in two minds right now.  Part of me already detests this 'drink' (I'm being charitable when using the term drink, I assure you) but the other part of me acknowledges that I feel cleaner already and I haven't had any of the usual headaches associated with fasting (probably due to the pure carbohydrates represented by the maple syrup.)  You'd think that maple syrups taste pretty much the same but the 32 ounce bottle received yesterday tastes pretty vile compared to the one I had on day one.  Anywho...&lt;br /&gt;&lt;br /&gt;I can report that, after playing indoor soccer last night, I've already dropped 4 pounds, but I expect that to be it for a while.  Jake, who is much lighter than me, reports having lost 5 pounds already.  I should also relay that the second partaking of the 'salt water flush' was incredibly, uh...  'successful'?  Yeah, it worked.  15 minutes after drinking it (I made it a bit more salty this morning) I found myself thanking God that our house has 6 bathrooms in it (the first time ever for that, lol.)  7 trips later over the course of an hour and a half and I'm sure I'm even lighter as we speak ;).&lt;br /&gt;&lt;br /&gt;Hunger was pretty strong yesterday, especially around lunchtime, but I slept really well last night and I did not wake up hungry at all.  I don't usually eat breakfast in any case so perhaps my body is saving the starvation feelings for later; however, it is already 3:30PM and I've had 3 glasses of the gunk so far and I'm not hungry at all.  I have heard that tomorrow and the next day are the worst though.&lt;br /&gt;&lt;br /&gt;I should admit that after drinking all that 'lemonade' yesterday I was actually looking forward to the herbal tea and it didn't disappoint.  I felt like a little old granny lying back and really REALLY enjoying a cup of herbal tea with no sweeteners in it.  Heh.&lt;br /&gt;&lt;br /&gt;I need to try working out today as I got in some decent cardio yesterday, let's try weights today.  More to post tomorrow!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-6456520207757371333?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/6456520207757371333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6456520207757371333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6456520207757371333'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-2.html' title='Lemonade Fast - Day #2'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-248325951570985927</id><published>2010-01-10T07:29:00.000-08:00</published><updated>2010-01-10T07:54:29.721-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cleansing'/><category scheme='http://www.blogger.com/atom/ns#' term='lemonade fast'/><title type='text'>Lemonade Fast - Day #1</title><content type='html'>My buddy Jake and I decided to try out the 'Lemonade Fast' from the Master Cleanse program; primarily to see if we still had the will power of our youth, and also due to the proposed health benefits (plus some secondary weight loss.)&lt;br /&gt;&lt;br /&gt;The premise to this 10 day fast is that heavy quantities of fresh citrus in distilled or other unfluoridated water will cleanse your digestive tract.  The 'lemonade' also contains organic grade b maple syrup (because you need some calories to get through the day) and, oddly enough, cayenne pepper (I've heard this is because it will keep your metabolism boosted, help prevent immune system depression due to the fasting, and because it is sadistic.)&lt;br /&gt;&lt;br /&gt;So, today, Sunday, January 10th, 2010 is the first day of our great adventure.  I went over to Jake and Erin's this morning as excited as kid headed off to bootcamp.  Excited, amped up, and more than a little anxious... ;)  Now, besides the 'lemonade' there are supposed to be two other facets of this program, an herbal laxative tea in the evenings and a 'salt water flush' in the mornings.  When I got to Jake and Erin's, Jake had jumped the gun and already downed a quart of warm salty water.  Jake also reported that the 'flush' worked extraordinarily well.  (Note to self, only consume the salt water flush when within 50 yards of a functioning toilet.)  Erin, who is not partaking in the fast, did want to try the flush so she started drinking it while Jake and I began concocting the 'lemonade.'&lt;br /&gt;&lt;br /&gt;The recipe for the lemonade for a single, 10 fl. oz. serving is:&lt;br /&gt;&lt;br /&gt;     8 fl. oz. Unfluorodated Spring Water (distilled water works)&lt;br /&gt;     1 fl. oz. (2 Tbsp) Grade B Organic Maple Syrup&lt;br /&gt;     1 fl. oz. (2 Tbsp or 1/2 a lemon) Fresh Lemon or Lime Juice (squeezed)&lt;br /&gt;     1/10 Tsp Cayenne Pepper&lt;br /&gt;&lt;br /&gt;The recipe for the salt water flush is:&lt;br /&gt;&lt;br /&gt;     32 fl. oz. Water&lt;br /&gt;     2 Tbsp Uniodized Sea Salt&lt;br /&gt;&lt;br /&gt;Since both Erin and Jake had partaken of the 'flush' I decided, what the hell, I might as well get used to it now.  Mmmm...  So not tasty.  I didn't have a hard time drinking it down but probably because I just imagined that I was drinking some overly salty soup (and it helped that the water was pretty warm.)&lt;br /&gt;&lt;br /&gt;Alright, on to the lemonade.  We made our respective containers of the 'drink' and we decided to make a whole day's supply (10 servings) so we used:&lt;br /&gt;&lt;br /&gt;     8.5 fl. oz. (we didn't have 10 ounces each on us, but we will tomorrow)&lt;br /&gt;     5 Lemons (it looked like a lot of juice but it came out to 20 Tbsp)&lt;br /&gt;     1 Tsp Cayenne Pepper&lt;br /&gt;     80 fl. oz. Unfluorodated Water&lt;br /&gt;&lt;br /&gt;Well, it tastes...  Unusual.  Lemonade and maple syrup actually combine really well and could make the basis for a great vodka cocktail; however, the cayenne pepper gives it a  really 'unusual' sort of kick.&lt;br /&gt;&lt;br /&gt;Anyhow, Jake and Erin had the rest of their Sunday to get on with and I had to get back to my house as my in-laws were getting ready to depart, so I took my fresh jug of 'drink' back to my house and waited for the effects of the salt water flush to take place.&lt;br /&gt;&lt;br /&gt;2 hours later - nothing.  Hmmm, maybe I'll get better results tomorrow.  Since I'd had no significant digestive action I decided to have my first glass of lemonade.  It was, strange.  It doesn't taste bad, it actually tastes surprisingly good if you can overlook the cayenne pepper (which I hope I can learn to do.)  I didn't enjoy the glass, but it has been about 20 minutes now and I feel good in that the cayenne actually gives you a little warming feeling.&lt;br /&gt;&lt;br /&gt;In any case, it is early days yet and we'll see how the rest of this experiment goes.  Only 9 days left!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-248325951570985927?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/248325951570985927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-1.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/248325951570985927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/248325951570985927'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2010/01/lemonade-fast-day-1.html' title='Lemonade Fast - Day #1'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-4978844129529013763</id><published>2009-12-03T06:01:00.000-08:00</published><updated>2009-12-03T06:04:00.843-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Comments'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>This has been driving me nutty for years in C#...</title><content type='html'>...but I finally figured out how to prevent the damn Visual Studio IDE from inserting asterisks into EVERY DAMN LINE of comments I put in a C# file (guess I should have Googled this.)&lt;br /&gt;&lt;br /&gt;Simply disable:&lt;br /&gt;&lt;br /&gt;    Text Editor &gt; C# &gt; Advanced &gt; Generate XML documentation comments for ///&lt;br /&gt;&lt;br /&gt;I know, bizarrely unobvious considering there are a myriad of settings for comment templates where you basically specify 'do not do anything when I create a comment' which are blithely ignored by this #$)(#@$* setting.&lt;br /&gt;&lt;br /&gt;I hope this makes someone else's day better like it did mine :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-4978844129529013763?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/4978844129529013763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/12/this-has-been-driving-me-nutty-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4978844129529013763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4978844129529013763'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/12/this-has-been-driving-me-nutty-for.html' title='This has been driving me nutty for years in C#...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-659840486138694894</id><published>2009-11-30T16:19:00.001-08:00</published><updated>2009-11-30T16:19:52.698-08:00</updated><title type='text'>I guess this is where I lean...</title><content type='html'>&lt;b&gt;My Political Views&lt;/b&gt;&lt;br&gt;I am a center-left moderate social libertarian&lt;br&gt;Left: 1.1, Libertarian: 3.06&lt;br&gt;&lt;img src="http://www.gotoquiz.com/politics/grid/18x26.gif"&gt;&lt;br&gt;&lt;a href="http://www.gotoquiz.com/politics/political-spectrum-quiz.html"&gt;Political Spectrum Quiz&lt;/a&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-659840486138694894?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/659840486138694894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/11/i-guess-this-is-where-i-lean.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/659840486138694894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/659840486138694894'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/11/i-guess-this-is-where-i-lean.html' title='I guess this is where I lean...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-4808728924536355872</id><published>2009-11-09T07:02:00.000-08:00</published><updated>2009-11-09T07:06:37.906-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='IE7'/><category scheme='http://www.blogger.com/atom/ns#' term='MSJVM'/><title type='text'>If you need to see the MSJVM console in IE7...</title><content type='html'>...then there are two things you need to do (or you may be able to skip step #1 and proceed directly to step #2 depending upon your current settings.)&lt;br /&gt;&lt;br /&gt;(1)Go to the menu bar (enable it if you've hidden it) and choose Tools|Internet Options|Advanced, scroll down to "Microsoft VM" and enable "Java console enabled".  You need to close and re-open your browser after this.&lt;br /&gt;&lt;br /&gt;(2)When running an applet, go to the menu bar and choose View|Java Console (it should be the item right after 'Full Screen' on the menu.)&lt;br /&gt;&lt;br /&gt;Hope this helps people testing applets on the MSJVM like I am currently.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-4808728924536355872?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/4808728924536355872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/11/if-you-need-to-see-msjvm-console-in-ie7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4808728924536355872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4808728924536355872'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/11/if-you-need-to-see-msjvm-console-in-ie7.html' title='If you need to see the MSJVM console in IE7...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2436094038768156880</id><published>2009-10-28T05:34:00.001-07:00</published><updated>2009-10-28T08:50:04.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Torres'/><category scheme='http://www.blogger.com/atom/ns#' term='Liverpool'/><title type='text'>A little bit of magic from Fernando Torres...</title><content type='html'>&lt;a href="http://www.sapphire3d.com/images/torres.gif"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 184px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5397628872199921458" border="0" alt="" src="http://www.sapphire3d.com/images/torres.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Enjoy! (Benayoun's pass wasn't too shabby either)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2436094038768156880?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2436094038768156880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/10/little-bit-of-magic-from-fernando.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2436094038768156880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2436094038768156880'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/10/little-bit-of-magic-from-fernando.html' title='A little bit of magic from Fernando Torres...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2690234731826534944</id><published>2009-03-26T14:10:00.001-07:00</published><updated>2009-03-26T14:13:37.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE8'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='tabs'/><title type='text'>If "Open in New Window" is not working...</title><content type='html'>...for you or "Open in New Tab" with IE8, it turns out that there's a strong likelyhood that (for some unknown reason) the installation forgot to register a particular component so:&lt;br /&gt;&lt;br /&gt;(1)Open a command prompt as Administrator&lt;br /&gt;(2)Type 'regsvr32 actxprxy.dll' and press Enter.&lt;br /&gt;&lt;br /&gt;You should get a small dialog popping up telling you that the DLL was registered properly.&lt;br /&gt;&lt;br /&gt;Now try IE8 again.&lt;br /&gt;&lt;br /&gt;I cannot fathom how Micro$oft has not found and eliminated this problem in IE8.  It has existed since the early betas.  Ridiculous.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2690234731826534944?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2690234731826534944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/03/if-open-in-new-window-is-not-working.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2690234731826534944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2690234731826534944'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/03/if-open-in-new-window-is-not-working.html' title='If &quot;Open in New Window&quot; is not working...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8196416412490744992</id><published>2009-02-16T12:51:00.000-08:00</published><updated>2009-02-16T13:02:31.134-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Annoying issue with Eclipse...</title><content type='html'>...for some reason you can't really export/import your preferences between installations of Ganymede (a version of the Eclipse IDE), and I've been using it on several machines lately and having to set all kinds of crap up to be the same manually.  This wouldn't be much of an issue except that the options are spread out rather willy-nilly in the application (although that is likely a residual of the very plugin based architecture.)  So, I finally tracked down where the most annoying options for me to setup are located - syntax coloring for Java (your annoyances will likely differ :).)&lt;br /&gt;&lt;br /&gt;After looking all over the place for them, I finally found them stored with each work space, not as settings for the application itself - weird (to me...)&lt;br /&gt;&lt;br /&gt;Anyhow, for syntax coloring there are two files you want to copy into your workspace's folder in order to equate them to those in another folder, the folder in question being:&lt;br /&gt;&lt;br /&gt;&amp;lt;Your Workspace&amp;gt;\.metadata\.plugins\org.eclipse.core.runtime\.settings\&lt;br /&gt;&lt;br /&gt;org.eclipse.jdt.ui.prefs&lt;br /&gt;org.eclipse.ui.editors.prefs&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8196416412490744992?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8196416412490744992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/02/annoying-issue-with-eclipse.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8196416412490744992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8196416412490744992'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/02/annoying-issue-with-eclipse.html' title='Annoying issue with Eclipse...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5632219744783677550</id><published>2009-02-12T12:40:00.001-08:00</published><updated>2009-02-12T12:45:36.048-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Update to services in Android...</title><content type='html'>...it turns out that what you really should do, if your code is in separate projects, is to declare a global (I presume) service moniker like this (in your service's manifest):&lt;br /&gt;&lt;br /&gt;&amp;lt;action android:name=&amp;quot;com.android.TestService.TEST_SERVICE&amp;quot; /&amp;gt;&lt;br /&gt;&lt;br /&gt;Then, change the method by which you call startService to call like this:&lt;br /&gt;&lt;br /&gt;startService( new Intent( "com.android.TestService.TEST_SERVICE" ) );&lt;br /&gt;&lt;br /&gt;NOTE:  The argument is a string, which is the key. (Don't forget to change your invocation to stopService if you call that as well.)&lt;br /&gt;&lt;br /&gt;Google might want to think about software less for tinkerers and more for real software engineers who will need to organize their code and look for opportunities to re-use, especially regarding services, and mention in their documentation that they recommend you add this naming schema to your service manifests for good reason.  I'm just glad I noticed it in the remote services sample code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5632219744783677550?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5632219744783677550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/02/update-to-services-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5632219744783677550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5632219744783677550'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/02/update-to-services-in-android.html' title='Update to services in Android...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-3324017888851204556</id><published>2009-02-11T08:01:00.000-08:00</published><updated>2009-02-11T08:26:40.702-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>If you're having a hard time with services under Android...</title><content type='html'>...I can feel your pain. The SDK documentation is good from a referential point of view, but focuses primarily (as you would expect) on the more superficial aspects of the system. Personally, I'm interested in services, IPC mechanisms, and networking so that means I get to read a bunch of API docs and peruse some of the samples.&lt;br /&gt;&lt;br /&gt;Now the Android SDK samples aren't bad; however, they are limited. Let's say you're going to write a GUI application (termed for some reason by Google as an 'Activity') and you're going to write a service (as in daemon/service.) Google gives you an example of doing so, but for some reason decided to include all the manifest data for ALL THE SAMPLES into the same manifest file and as one big project (which has implications under Eclipse - which is presumably the development environment you're working in unless you're a sadist and you probably enjoy the pain I'm describing anyhow...)&lt;br /&gt;&lt;br /&gt;Well, real projects for useful applications do NOT clump everything together in a single manifest, and they do NOT clump all the source code into the same project. Separating the two is not difficult; HOWEVER, Google's documentation and everything I could find on the 'net regarding service declarations in application manifests neglects to mention what you need to do when yo uhave one project that will be a client of the service and the other project being the service in question. Now, maybe I'm an idiot, but I spent several hours trying to understand why my client application could not successfully call 'startService' on a perfectly named, installed, and runnable service that was on the emulator. The log kept reporting that the component could not be found (while explicitly listing the component correctly which means it had exactly the right package name.) After beating my head for hours, I finally wised up to the fact that I was making an enormous assumption.&lt;br /&gt;&lt;br /&gt;I was ASSuming that Google wasn't doing something funny with the service binding mechanism and that because it used a standard Java packaging nomenclature, surely that meant that my client application could call 'startService' and have the OS identify the package correctly. Boy was I wrong.&lt;br /&gt;&lt;br /&gt;Apparently, the 'multi-project' trick with a service is that you must declare the service in the manifest of every client application that you will have use the service - even though the declaration is just supposed to be in the service project's manifest according to the documentation (and you cannot tell from the samples because they're all glommed together.)&lt;br /&gt;&lt;br /&gt;So, before I forget this, and so I can google my own frustration when I do forget this:&lt;br /&gt;&lt;br /&gt;In your client manifest XML you need to add this inside &lt;application&gt;:&lt;br /&gt;&lt;br /&gt;&amp;lt;service name=&amp;quot;com.MyPackages.MyService.MyServiceClass&amp;quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;Please note the full package name usage, which is HIGHLY recommended in case you move projects around or rename things. BTW, if your service is to run in its own process, add&lt;br /&gt;android:process=":remote" to your service tag, otherwise it runs locally which I don't understand the purpose of really.&lt;br /&gt;&lt;br /&gt;So, to sum up. If you create a service, you'll have a manifest for that project with a service entry in it, as one would expect. If you create a client that will make use of this service, you'll have to add, oddly, a service entry in the client's manifest as well.&lt;br /&gt;&lt;br /&gt;I don't know if this is a bug or not, but it was certainly unclear to me. Hope this helps somebody.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-3324017888851204556?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/3324017888851204556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2009/02/if-youre-having-hard-time-with-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3324017888851204556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3324017888851204556'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2009/02/if-youre-having-hard-time-with-services.html' title='If you&apos;re having a hard time with services under Android...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5574031749703715895</id><published>2008-10-29T07:06:00.000-07:00</published><updated>2008-10-29T07:11:38.676-07:00</updated><title type='text'>Richerino and I started our running yesterday...</title><content type='html'>...and I wanted to post our cadence (the clean one) for posterity.  This is one my Dad (ex UDT/SEAL type) used to sing when running (again, this is the family oriented version but the original is close except at the end.)&lt;br /&gt;&lt;br /&gt;C130 rollin down the strip&lt;br /&gt;Airborne froggies gonna take a little trip&lt;br /&gt;&lt;br /&gt;stand up hook up shuffle to the door&lt;br /&gt;jump right out and count to four&lt;br /&gt;&lt;br /&gt;if my chute don't open wide&lt;br /&gt;i gotta another one by my side&lt;br /&gt;&lt;br /&gt;and if that one should fail me too&lt;br /&gt;I'll be on the ground before you&lt;br /&gt;&lt;br /&gt;if i die in a combat zone&lt;br /&gt;box me up and ship me home&lt;br /&gt;&lt;br /&gt;put my fins up on my chest&lt;br /&gt;and bury me in leanin' rest&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5574031749703715895?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5574031749703715895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/10/richerino-and-i-started-our-running.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5574031749703715895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5574031749703715895'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/10/richerino-and-i-started-our-running.html' title='Richerino and I started our running yesterday...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5557907926972562271</id><published>2008-09-29T06:38:00.001-07:00</published><updated>2008-09-29T06:38:49.695-07:00</updated><title type='text'></title><content type='html'>&lt;!-- SpringWidgets | Fallout 3 Countdown (#52816) | HTML | Generated on 09/16/2008 --&gt;&lt;object type="application/x-shockwave-flash" allowNetworking="all" allowScriptAccess="always" allowFullScreen="true" height="170" width="300" id="springwidgets_52816" align="middle" data="http://downloads.thespringbox.com/web/wrapper.php?file=52816.sbw" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"&gt;&lt;param name="allowNetworking" value="all" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="movie" value="http://downloads.thespringbox.com/web/wrapper.php?file=52816.sbw" /&gt;&lt;param name="flashvars" value="" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;param name="bgColor" value="0x000000" /&gt;&lt;br /&gt;  &lt;embed bgColor="0x000000" allowNetworking="all" allowFullScreen="true" allowScriptAccess="always" src="http://downloads.thespringbox.com/web/wrapper.php?file=52816.sbw" flashvars="" quality="high" name="springwidgets_52816" wmode="transparent" width="300" height="170" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;div style="text-align: right;"&gt;&lt;div style="text-align: left; margin:auto; position: relative; top: -15px; left:170px; width: 195px;"&gt;&lt;a href="http://planetfallout.gamespy.com" target="_blank"&gt;Planet Fallout&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5557907926972562271?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5557907926972562271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/09/planet-fallout.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5557907926972562271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5557907926972562271'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/09/planet-fallout.html' title=''/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-3418469085734998782</id><published>2008-07-28T15:57:00.000-07:00</published><updated>2008-07-28T16:44:32.376-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tv'/><title type='text'>Long time, no blog...  New TV setup</title><content type='html'>Apologies for not having blogged in such a long time, I know Scrappy was about to remove me from her list of friends because of it, lol.  Hold on Scrappy!&lt;br /&gt;&lt;br /&gt;Anyhow, I thought I'd share some recent tribulation regarding setting up a flat panel television in your house (in my case, over the mantel of the fireplace.)  Now, I wanted to have the "nothing to see here but the TV" kind of approach so that none of the components (Xbox 360, comcast HD DVR, VCR/DVR-R) would be visible as they were to reside in a cabinet built into the family room wall.  This looks simple, sounds simple, but for me it was in reality a real pain in the a**. ;)&lt;br /&gt;&lt;br /&gt;I'll avoid describing the annoying pain I went through learning how to run cable, what types of cable to run, what wall plates to get, the agonizing groan when I remembered that my remote(s) are IR and not RF and therefore do not penetrate wood cabinet doors (I know, I'm an idiot...)  I'll simply put the steps I would take NOW to do this.  I presume that you already have your components themselves.  I also presume that you already have an electrical outlet above your mantle otherwise you'll need to hire an electrician to put one in for you  Remember, if you don't feel competent performing these actions, don't blame me if you screw up your drywall/sheetrock/electrocute yourself, et cetera.  America has become a land of litigation and I take no responsibility for your actions.&lt;br /&gt;&lt;br /&gt;(1)Purchase TV, I recommend measuring the width of the area you wish to place it, in my case a Samsung PN58A550 (which fit perfectly between two areas of molding over the mantle.)&lt;br /&gt;&lt;br /&gt;(2)Purchase installer service - you do NOT want to be doing this yourself unless your a professional handyman merely for the liability issues involved in a 120 pound television tearing out of the studs of your wall when there could be children near.  I highly recommend searching your local area for home theater personnel to do this and skipping using services like Firedog (although I hear they're actually excellent) due to the expense.  Companies like Firedog have package deals and won't simply "hang the mount and TV" because they'll charge you for wiring and everything else regardless of whether you have them wire it or not.  BTW, they also charge an extra fee if the TV goes over a fireplace (which they don't mention but a friend mentioned this to me.)  Anyhow, $400+ to properly bolt a TV mount to a wall and then hang the TV on it is just a little too much.  The choice is yours.&lt;br /&gt;&lt;br /&gt;(3)Go to radio shack or some other store which carries wall plates and buy two or 4 bull nose wall plates (depending upon how many cables you are going to run.  I ran two HDMI and a set of component video and audio through a single bull nose and it barely fit - 7 cables in total.)  Get an equal number of simple junction boxes as well.&lt;br /&gt;&lt;br /&gt;(4)Depending upon the distance between your components and your TV you can use light HDMI cables (higher AWG means slimmer more flexible cables) instead of heavy ones and if the distance is short (15 feet or less) you can simply run the HDMI directly from the back of the component into the back of the TV - if longer I recommend getting two Beldin twisted pair HDMI cables (get all of your cables at www.bluejeancables.com by the way - the best quality and prices by far)  and run those cables inside your walls and have them connecting to HDMI wall plates at either end.  Then simply connect your component to the wall plate with a 1 foot flexible HDMI cable and connect your TV to the other wall plate via another 1 foot flexible HDMI cable.  Don't try to connect your component directly to the TV with the heavier gage cables as this will affect your TV's tilt ability and possibly damage the inputs on the rear of the TV.&lt;br /&gt;&lt;br /&gt;(5)Get an IR extender, I highly recommend the relatively inexpensive Hot Link Pro (http://www.hot-link.com)  I was a little worried about it at first, but once I received it and installed it, it works great.  No problems with plasma IR interference with the Samsung either (apparently this was an issue with earlier plasma televisions.)  I highly recommend getting the extension cable for the IR 'eye' as well (there's a cheap one available on Amazon iirc) so that you can run that cable through the wall as well in order to put the IR extender's 'eye' just at the base of the TV itself so you only ever point your remote at the TV (not the TV and over to where the component rack/closet and 'eye' are) - the default cable that comes with the hot link pro is about 6 feet long.&lt;br /&gt;&lt;br /&gt;(6)Beg/borrow/steal a wire guide/fishing tape.  This is what you will use to run the cables through your walls.  You can hack one of these together (like I did) but it's extremely unfun and it's always better to "use the right tool for the job" believe me.&lt;br /&gt;&lt;br /&gt;(7)Beg/borrow/steal a drywall saw.&lt;br /&gt;&lt;br /&gt;(8)Optional - Buy a Logitech Harmony One universal remote.  OMG it was easy to setup, very nice, IS RECHARGABLE, and works very well (at least so far, hehe...)&lt;br /&gt;&lt;br /&gt;Now, I would do the following once I'd accumulated all these things:&lt;br /&gt;&lt;br /&gt;(1)If possible, test EACH cable you plan to run, I can imagine no greater disappointment than busting your butt running cables and then finding out that one or more of them don't work.  This is highly unlikely to occur, but hey, running cables is not fun for me.&lt;br /&gt;&lt;br /&gt;(2)Run your cables. Find a likely spot in your component cabinet that shares a common wall with the mantle/fireplace.  Use a pencil and outline the junction box against where you'd like to place it.  Use the drywall saw to cut this out.  Do the same above the mantle in a spot that will be reasonably close to where the inputs on your TV will be when the TV is hung.  Don't put in the junction boxes yet.  Get a friend and a flashlight and start feeding your wire guide as close as you can toward the other hole in the drywall.  Your friend should be looking through his/her drywall hold trying to catch a glimpse of your wire.  Once they see it, they use the fishing tape to retrieve it.  This is the hairiest part of the whole deal for me.  Once you gotten a hold of that wire, it's all just regular old work.  Once you do so, I HIGHLY recommend running some strong fishing line through with the wire guide.  Use enough fishing line so that the line comes out the far drywall hole and can then be taped/tied to the other end of itself to make a circle.  You want to do this so that you can attach your cables (a cable or two/three at a time) to it and simply pull on the fishing line to run these cables through the wall.  I cannot stress enough the need to use strong fishing line, to securely attach your cables to it when running them, and to inspect the line every time you pull a cable, looking for abrasions and/or damage of any kind.  If you see any damage, use it to run another line through before it breaks.  Once you've run all the cables you want (make sure there's enough slack on each side of the drying holes), put in your junction boxes.  You could do this before, but when I did I found that they interfered a bit with running the cables until I removed them again.  Then put in your wall plates.  You should know have a nice looking connection in your component cabinet with loose cables dangling out, and a similar connection above your mantle.  I HIGHLY recommend that when you're done running cable you untie the fishing line from itself, tape one end of it securely on the mantle (where it will be covered by the TV) and roll up the slack and tape it under the top of your component cabinet so that you can run cable again in the future if you wish without having to fish for the wire guide (which seems like it would be tough if cables are already running through there.)&lt;br /&gt;&lt;br /&gt;(3)Now you can have the installers come put up the TV mount (make sure you have purchased the correct mount for the type and size of your television, I used the x-large tilt mount.)  Make sure the installers place the mount at the correct height you desire or your wife may yell at you (luckily mine expressed her displeasure before they permanently mounted it.)&lt;br /&gt;&lt;br /&gt;(4)If the installers didn't connect the inputs, go ahead and do so now.  Test the TV, get everything working from each component before moving on.&lt;br /&gt;&lt;br /&gt;(5)Setup your universal remote (if you're going to use one), get everything working before moving on.&lt;br /&gt;&lt;br /&gt;(6)Setup your IR extender.  In my case this meant using the line I'd luckily kept to run my late arriving extension cable so that I could attach the IR extender's eye to the bottom of the TV behind a grill where you can't see it, then attaching little IR flashers to the IR sensitive spots on my components.&lt;br /&gt;&lt;br /&gt;(7)Open a beer, sit down, and enjoy your new TV.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-3418469085734998782?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/3418469085734998782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/07/long-time-no-blog-new-tv-setup.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3418469085734998782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3418469085734998782'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/07/long-time-no-blog-new-tv-setup.html' title='Long time, no blog...  New TV setup'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-176204617359043258</id><published>2008-04-23T07:12:00.000-07:00</published><updated>2008-04-23T07:14:01.918-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BucketHead'/><title type='text'>For fellow fans of BucketHead...</title><content type='html'>Here is a clip of him playing with G&amp;amp;R (who I personally can't stand) where he does some funny stuff like doin' the robot and then plays some serious licks. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xSSkKgE8XVs&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/xSSkKgE8XVs&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-176204617359043258?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/176204617359043258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/04/for-fellow-fans-of-buckethead.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/176204617359043258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/176204617359043258'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/04/for-fellow-fans-of-buckethead.html' title='For fellow fans of BucketHead...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-4012766113538193967</id><published>2008-03-28T15:34:00.000-07:00</published><updated>2008-03-28T15:35:43.114-07:00</updated><title type='text'>Kim suggested we find out what kind of 'dog' we...</title><content type='html'>...all are (especially the men I presume.)&lt;br /&gt;&lt;br /&gt;Here's my results :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.dogster.com/quizzes/what_dog_breed_are_you'&gt;&lt;img src='http://files.dogster.com/images/quizzes/what_dog_breed_are_you/badge_golden.png' alt="What dog breed are you? I'm a Golden Retriever! Find out at Dogster.com" border='0'/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-4012766113538193967?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/4012766113538193967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/03/kim-suggested-we-find-out-what-kind-of.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4012766113538193967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4012766113538193967'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/03/kim-suggested-we-find-out-what-kind-of.html' title='Kim suggested we find out what kind of &apos;dog&apos; we...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-4979821839337600293</id><published>2008-03-17T14:52:00.001-07:00</published><updated>2008-03-17T14:55:50.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>I really like Qt but when you find something...</title><content type='html'>...as amateurish as a filename with a space in it breaking their tools (qmake) it makes you wonder.&lt;br /&gt;&lt;br /&gt;Specifically, if you have a file name 'My Filename.cpp" and you run "qmake -project" you get a project file that has failed to wrap the filename in quotes which is required by "qmake -makefile" - ridiculous.  You have to edit the *.pro file by hand.&lt;br /&gt;&lt;br /&gt;You're probably thinking what I was thinking "there's a switch or option somewhere that he's missing" - nope.&lt;br /&gt;&lt;br /&gt;So - If you find your attempt to produce a makefile resulting in weird errors where one filename becomes two, edit your *.pro and wrap those filenames with spaces in quotes yourself ;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-4979821839337600293?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/4979821839337600293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/03/i-really-like-qt-but-when-you-find.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4979821839337600293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/4979821839337600293'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/03/i-really-like-qt-but-when-you-find.html' title='I really like Qt but when you find something...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5683777477576014128</id><published>2008-03-17T10:43:00.001-07:00</published><updated>2008-11-22T21:14:45.261-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Using VS 2005 and the Open Source version of Qt for Windows</title><content type='html'>I found myself with some free time the other day and wanted to play with using &lt;a href="http://www.trolltech.org/"&gt;Qt on Windows&lt;/a&gt; as I have been using it for fun on various Linux flavors for years. I even went so far, on Linux, as to write an 'intellisense' like autocompletion class that I put into my own little code editor (because I deal with a lot of APIs both in my day job and my own activities.)&lt;br /&gt;&lt;br /&gt;This time though I wanted to use it with Visual Studio 2005 and let VS do the work for me. Some initial attempts at this (I am using the open source windows version which is available as of Qt4.x) failed miserably but I finally managed to get things going after checking a few blogs (most notably &lt;a href="http://blog.idevelopsoftware.com/"&gt;Bennet Smith's&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;The version of Qt I am using is Qt 4.3.4 (you should know this because qmake command line args change occasinally [as they have between 4.x versions already]) so this should work for you if you have installed and built Qt 4.3.4 on your Windows box and have Visual Studio installed correctly.&lt;br /&gt;&lt;br /&gt;The general process, at least for me, is to create a new toolbar in VS and add two buttons to it for triggering "qmake -project" and "qmake -makefile", then to create a Visual C++ Makefile project and edit the nmake parameters of the project. After this you should be able to use both intellisense, debug, and build using your normal build methods without a hitch.&lt;br /&gt;&lt;br /&gt;Let's get started!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 - create a new toolbar to contain your new Qt specific commands&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We want to create 2 buttons, both run the 'qmake' command, the first one runs qmake to produce a *.pro (qmake project) file and the second one generates a makefile from that *.pro file.&lt;br /&gt;&lt;br /&gt;(1)In VS select ToolsExternal Tools to bring up the external tools menu.&lt;br /&gt;&lt;br /&gt;(2)Press the Add button, and fill in the following properties as below:&lt;br /&gt;Title: qmake project&lt;br /&gt;Command: &lt;&gt;&lt;path&gt;qmake.exe&lt;br /&gt;Arguments: -project&lt;br /&gt;Initial Dir: $(ProjectDir)&lt;br /&gt;&lt;br /&gt;(3)Press the Add button and fill in the following properties as below:&lt;br /&gt;Title: qmake makefile&lt;br /&gt;Command: &lt;&gt;&lt;your&gt;&lt;path&gt;qmake.exe&lt;br /&gt;Arguments: -makefile -spec win32-msvc2005&lt;br /&gt;Initial Dir: $(ProjectDir)&lt;br /&gt;&lt;br /&gt;If you wish, you can also set the checkbox for "Use Output Window" for these buttons (I do in case there's a problem) You may also wish to add buttons to launch Qt Designer and Qt Assistant here as well (as I did.)&lt;br /&gt;&lt;br /&gt;Now that you have new external tools configured, let's put them on a new toolbar to help us build Qt projects.&lt;br /&gt;&lt;br /&gt;To add a new toolbar to VS go to ToolsCustomize and then select the Toolbars tab on the dialog and press the New button. Put in whatever you want for the toolbar name, because you may ultimately have more than one version of Qt installed I recommend putting something like "Qt 4.3.3" as the title.&lt;br /&gt;&lt;br /&gt;To add the buttons we want to this new toolbar choose the Commands tab on the Customize dialog, then find the Tools entry in the categories listed and in that sub-category find the external commands.&lt;br /&gt;&lt;br /&gt;You need to figure out which commands are your qmake commands because for some odd reason VS simply gives them numbers. For most people they will be the two last external tool entries by number but for others who have had other external tools installed and then uninstalled (such as myself) you may have to count the number of entries for external tools in the drop down menu on the main UI because in my case my qmake entries were #10 and #11 and I had external tool numbers all the way up to 23.&lt;br /&gt;&lt;br /&gt;You can simply drag the entries from the sub category list onto the toolbar and the title should show up and tell you if you've selected the correct entry. If you just see 'external tool #&lt;something&gt;" it's the wrong one.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 - Create a VS project file for use with Qt&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;(1)Choose FileNewProject&lt;br /&gt;(2)Under Project Types, choose General&lt;br /&gt;(3)Choose Makefile Project from the list of sub projects now showing&lt;br /&gt;(4)Give it the location you desire&lt;br /&gt;(5)Press the Ok button and when the application wizard pops up press the Finish button&lt;br /&gt;&lt;br /&gt;Now that the project has been created, we need to edit some of its properties:&lt;br /&gt;&lt;br /&gt;(1)Bring up the project's properties&lt;br /&gt;(2)Choose Debug as the project type&lt;br /&gt;(3)Choose Configuration Properties&lt;br /&gt;(4)Choose NMake, and under the NMake properties on the right side:&lt;br /&gt;(5)Set Build Command Line to: nmake debug-all&lt;br /&gt;(6)Set Rebuild All Command Line to: nmake debug-clean debug-all&lt;br /&gt;(7)Set Clean Command Line to: nmake debug-clean&lt;br /&gt;(8)Set CLR Support to: No CLR support&lt;br /&gt;(9)Add to Preprocessor Definitions: UNICODE; QT_LARGEFILE_SUPPORT; QT_DLL; QT_GUI_LIB; QT_CORE_LIB; QT_THREAD_SUPPORT&lt;br /&gt;(10)Set Include Search Path to the corresponding locations of your Qt install: &lt;path&gt;&lt;br /&gt;(mine for example are: C:\Qt\4.3.4\include\Qt;C:\Qt\4.3.4\include\Qt3Support;C:\Qt\4.3.4\include\QtAssistant;C:\Qt\4.3.4\include\QtCore;C:\Qt\4.3.4\include\QtDBus;C:\Qt\4.3.4\include\QtDesigner;C:\Qt\4.3.4\include\QtGui;C:\Qt\4.3.4\include\QtNetwork;C:\Qt\4.3.4\include\QtOpenGL;C:\Qt\4.3.4\include\QtScript;C:\Qt\4.3.4\include\QtSql;C:\Qt\4.3.4\include\QtSvg;C:\Qt\4.3.4\include\QtTest;C:\Qt\4.3.4\include\QtUiTools;C:\Qt\4.3.4\include\QtXml)&lt;br /&gt;(11)Set the project type to release and perform steps 5-10 replacing the word debug with release&lt;br /&gt;&lt;br /&gt;Now, save everything, and before you do anything else, press the qmake project button on your toolbar (this should generate a *.pro file in the solution directory) and then press the qmake makefile button (this should result in a Makefile being placed in the project directory) and now you can simply choose "Build Solution" from the Build menu of VS and everything should be up and running.&lt;br /&gt;&lt;br /&gt;Hope this helps someone out there :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5683777477576014128?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5683777477576014128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/03/using-vs-2005-and-open-source-version.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5683777477576014128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5683777477576014128'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/03/using-vs-2005-and-open-source-version.html' title='Using VS 2005 and the Open Source version of Qt for Windows'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5464378285276047370</id><published>2008-03-12T13:33:00.000-07:00</published><updated>2008-03-17T10:42:27.155-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual pc'/><title type='text'>If you still get a blank screen and cursor after install...</title><content type='html'>...try configuring X to avoid using the default detected S3 driver like below (other Linux distributions use other methods but below should work for OpenSuse flavors):&lt;br /&gt;&lt;br /&gt;(1)Boot using "3" (without quotes) as an option to initiate a command shell&lt;br /&gt;(2)Enter the command: "sax2 -m 0=vesa" (without quotes)&lt;br /&gt;(3)Wait for the confirmation window and choose "Ok"&lt;br /&gt;(4)Reboot and start as you would normally&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5464378285276047370?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5464378285276047370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/03/if-you-still-get-blank-screen-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5464378285276047370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5464378285276047370'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/03/if-you-still-get-blank-screen-and.html' title='If you still get a blank screen and cursor after install...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1218922372832748516</id><published>2008-03-12T12:31:00.000-07:00</published><updated>2008-03-17T10:42:41.834-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual pc'/><title type='text'>For those of you interested in Linux under Microsoft Virtual PC 2007...</title><content type='html'>...there's a 'quirk' with Virtual PC that can make it difficult for the installer (in my case OpenSuse 10.3) to detect your mouse/keyboard properly, to get around this try adding the installer boot option "i8042.noloop" (minus the quotes of course.)&lt;br /&gt;&lt;br /&gt;Also, if you're mounting the install from an ISO, this can be problematic as well. If the install keeps asking you to put in CD1 (or any type of media it shouldn't be asking for), try burning the ISO to disk and asking Virtual PC to let the virtual machine grab the CD/DVD drive as this fixed some problems I was having as well.&lt;br /&gt;&lt;br /&gt;I hear that you need to change the framebuffer's color depth to 16-bit (from the default of 24-bit) after install as well, but we'll see about that later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1218922372832748516?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1218922372832748516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/03/for-those-of-you-interested-in-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1218922372832748516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1218922372832748516'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/03/for-those-of-you-interested-in-linux.html' title='For those of you interested in Linux under Microsoft Virtual PC 2007...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-6444904161797621658</id><published>2008-02-06T08:12:00.000-08:00</published><updated>2008-02-06T08:35:14.603-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humour'/><category scheme='http://www.blogger.com/atom/ns#' term='FedEx'/><category scheme='http://www.blogger.com/atom/ns#' term='golf'/><title type='text'>Too good not to share...</title><content type='html'>&lt;div align="center"&gt;FedEx comes up with a great commercial... &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-310cff6b27e24dbd" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v17.nonxt8.googlevideo.com/videoplayback?id%3D310cff6b27e24dbd%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329915028%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5F1C9A937A03C9896EE9F9B23392BA4DB5D6190A.5972E572719405EE0D8999684E7B0D319E60081E%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D310cff6b27e24dbd%26offsetms%3D5000%26itag%3Dw160%26sigh%3DOutrb-ruY3_SsouZ_WP9qSlJnuQ&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v17.nonxt8.googlevideo.com/videoplayback?id%3D310cff6b27e24dbd%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1329915028%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5F1C9A937A03C9896EE9F9B23392BA4DB5D6190A.5972E572719405EE0D8999684E7B0D319E60081E%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D310cff6b27e24dbd%26offsetms%3D5000%26itag%3Dw160%26sigh%3DOutrb-ruY3_SsouZ_WP9qSlJnuQ&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-6444904161797621658?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=310cff6b27e24dbd&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/6444904161797621658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/02/too-good-not-to-share.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6444904161797621658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6444904161797621658'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/02/too-good-not-to-share.html' title='Too good not to share...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5616639988538693039</id><published>2008-02-05T13:14:00.001-08:00</published><updated>2008-02-05T13:15:13.852-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boys'/><category scheme='http://www.blogger.com/atom/ns#' term='birls'/><category scheme='http://www.blogger.com/atom/ns#' term='girls'/><category scheme='http://www.blogger.com/atom/ns#' term='goys'/><title type='text'></title><content type='html'>&lt;table width=350 align=center border=0 cellspacing=0 cellpadding=2&gt;&lt;tr&gt;&lt;td bgcolor="#EEEEEE" align=center&gt;&lt;font face="Georgia, Times New Roman, Times, serif" style='color:black; font-size: 14pt;'&gt;&lt;b&gt;You Are 80% Boyish and 20% Girlish&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#FFFFFF"&gt;&lt;center&gt;&lt;img src="http://www.blogthingsimages.com/howboyishorgirlishareyouquiz/boyish.gif" height="100" width="100"&gt;&lt;/center&gt;&lt;font color="#000000"&gt;&lt;br /&gt;You have a tough exterior - and usually a tough interior to match it.&lt;br /&gt;You're no nonsense, logical, and very assertive.&lt;br /&gt;Sometimes you can't understand women at all, even if you're a woman yourself.&lt;br /&gt;You see things rationally, and don't like to let your emotions get the best of you.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div align="center"&gt;&lt;a href="http://www.blogthings.com/howboyishorgirlishareyouquiz/"&gt;How Boyish or Girlish Are You?&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5616639988538693039?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5616639988538693039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/02/you-are-80-boyish-and-20-girlish-you.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5616639988538693039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5616639988538693039'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/02/you-are-80-boyish-and-20-girlish-you.html' title=''/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-7934564008781779161</id><published>2008-02-03T08:12:00.000-08:00</published><updated>2008-12-09T01:25:14.549-08:00</updated><title type='text'>Humorous poster...</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_RKtXwakvcTw/R6XoXOwD1SI/AAAAAAAAADc/BtY0rtOVLQw/s1600-h/paranoia.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5162788033644451106" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_RKtXwakvcTw/R6XoXOwD1SI/AAAAAAAAADc/BtY0rtOVLQw/s400/paranoia.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;I found online. Enjoy!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-7934564008781779161?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/7934564008781779161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/02/humorous-poster.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7934564008781779161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7934564008781779161'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/02/humorous-poster.html' title='Humorous poster...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RKtXwakvcTw/R6XoXOwD1SI/AAAAAAAAADc/BtY0rtOVLQw/s72-c/paranoia.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-155434448701358337</id><published>2008-02-03T07:57:00.001-08:00</published><updated>2008-12-09T01:25:14.790-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rock band'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrappy'/><title type='text'>Who rocks more than scrappy?</title><content type='html'>That's right... I DO! Lol... I've 5 starred the first 28 songs on Expert now (on guitar) but the last few songs have been kicking my butt. I can beat the game on Expert, but getting four stars on some of these songs is tough (for me.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_RKtXwakvcTw/R6XpGOwD1TI/AAAAAAAAADk/s0AVMk-JybQ/s400/P2012129.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5162788841098302770" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_RKtXwakvcTw/R6XpGOwD1TI/AAAAAAAAADk/s0AVMk-JybQ/s400/P2012129.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have a feeling some of the later songs like "Green grass and high tides" are going to be murder...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_RKtXwakvcTw/R6XpHuwD1UI/AAAAAAAAADs/Pbx3p8AOvUw/s400/P2022130.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5162788866868106562" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_RKtXwakvcTw/R6XpHuwD1UI/AAAAAAAAADs/Pbx3p8AOvUw/s400/P2022130.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was just happy to get past "Suffragette City" unscathed :). For some reason that song kicks my butt. Anyhow, eat your heart out Scrappy! (Reptilia took me a couple of times to 5 star it, the picture above is from my first attempt.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-155434448701358337?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/155434448701358337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/02/who-rocks-more-than-scrappy.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/155434448701358337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/155434448701358337'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/02/who-rocks-more-than-scrappy.html' title='Who rocks more than scrappy?'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RKtXwakvcTw/R6XpGOwD1TI/AAAAAAAAADk/s0AVMk-JybQ/s72-c/P2012129.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-519017325534187073</id><published>2008-01-30T10:14:00.001-08:00</published><updated>2008-12-09T01:25:15.013-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offroad'/><category scheme='http://www.blogger.com/atom/ns#' term='middle aged stupidity'/><category scheme='http://www.blogger.com/atom/ns#' term='mud'/><title type='text'>We got mudified...</title><content type='html'>&lt;a href="http://amomentsshifting.blogspot.com/"&gt;Mein Rich&lt;/a&gt; undt mein self got muddy this past weekend. Rich got very slightly muddy. I got 'dug yourself out of your own grave' muddy. The best part was that I was fairly clean until we were coming back to the main parking area on the main trail and I went down a steep, muddy, slippery hill and at the bottom was a virtual bog o' mud. It was one of those mud bogs that makes you think "Damn, I'd sure hate to fall into that."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5161338190124274914" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_RKtXwakvcTw/R6DBvOwD1OI/AAAAAAAAAC8/gyUz4UMT6ZA/s400/Muddy+Bike.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I make it down the slippery hill, and I need to explain that I'm tired by this point as the riding we were doing is very technical (tight trails, steep downslopes with large rocks, big slippery power hill climbs - but fun), I hit the bog knowing that I need to power through; unfortunately my front tire was in one underwater rut, and my back tire went into a different underwater rut and my back end threw out left. This had the interesting effect of catapulting me to the right and a bit over my handlebars and BLAM did I hit that mud with a spectacular splash. Rich tells me it was impressive from his vantage point.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5161338555196495090" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_RKtXwakvcTw/R6DCEewD1PI/AAAAAAAAADE/gm2uvOW7jgA/s400/Muddy+Boot.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyhow, here's a few pics that don't really do the mud justice (especially on the bike.) It took me hours to wash that thing off.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-519017325534187073?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/519017325534187073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/we-got-mudified.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/519017325534187073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/519017325534187073'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/we-got-mudified.html' title='We got mudified...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RKtXwakvcTw/R6DBvOwD1OI/AAAAAAAAAC8/gyUz4UMT6ZA/s72-c/Muddy+Bike.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1196259996178088180</id><published>2008-01-29T07:38:00.001-08:00</published><updated>2008-12-09T01:25:15.159-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Egg Beaters'/><category scheme='http://www.blogger.com/atom/ns#' term='Food'/><category scheme='http://www.blogger.com/atom/ns#' term='Eggs'/><title type='text'>Eggbeaters</title><content type='html'>I recently tried out &lt;a href="http://www.eggbeaters.com/index.jsp"&gt;Eggbeaters &lt;/a&gt;for the first time and have to say that I was quite happy with them. I made a great omelette using the &lt;a href="http://www.eggbeaters.com/products/southwestern.jsp"&gt;Southwestern &lt;/a&gt;variety.&lt;br /&gt;&lt;br /&gt;The website is a little kitsch and oddly 80's (at least to me) but there's nothing wrong with the product itself.&lt;br /&gt;&lt;p&gt;The point of Eggbeaters is that Eggs are a great source of protein and relatively low in calorie; however, they are ridiculously high in cholesterol which is almost entirely found in the yolk and not the egg whites (hence all the 'egg white omelette' orders you've heard.) Of course, because God has a sense of humour, virtually all the vitamin benefits of eggs are also in that cholosteral filled yolk. Eggbeaters makes their product out of the white but adds vitamins to make up for those lost in removing the yolks. This results in cutting the calorie count in half, eliminating all the fat and cholesterol.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5160927118804374738" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_RKtXwakvcTw/R59L3uwD1NI/AAAAAAAAAC0/_xq_2aXXBmk/s400/Omelette.jpg" border="0" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;I had mistakenly assumed that they were some sort of facsimile or vegan analog to eggs when in fact they're just egg whites fortified with things like beta carotene. (Beta carotene gives the Eggbeaters a normal yellow color as well.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;They come in flavored varieties as well: &lt;a href="http://www.eggbeaters.com/products/garden.jsp"&gt;Garden vegetable&lt;/a&gt;, &lt;a href="http://www.eggbeaters.com/products/southwestern.jsp"&gt;Southwestern&lt;/a&gt;, &lt;a href="http://www.eggbeaters.com/products/cheesechive.jsp"&gt;Cheese &amp;amp; chive&lt;/a&gt;. The sodium content is a touch high in some of the flavoried varieties, but not bad if you don't throw salt on your food (which you shouldn't need to if you're making it anyhow.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1196259996178088180?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1196259996178088180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/eggbeaters.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1196259996178088180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1196259996178088180'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/eggbeaters.html' title='Eggbeaters'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RKtXwakvcTw/R59L3uwD1NI/AAAAAAAAAC0/_xq_2aXXBmk/s72-c/Omelette.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8065825275054912361</id><published>2008-01-29T07:24:00.000-08:00</published><updated>2008-01-29T07:32:57.442-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TCP/IP'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Presumed Idiocy'/><title type='text'>Can someone please explain to me why Flash requires a zero byte terminator?</title><content type='html'>I ran into this years ago when adding network TCP/IP stream support for 3rd party clients and one of the companies wanted to use Flash to consume our AI and I couldn't understand why the damn thing couldn't receive responses (they were using XMLSocket in Actionscript) and there was zero information at the time because this was a new 'feature' of Flash.  I only figured it out (luckily) when I noticed that n batched commands to the AI resulted in n-1 responses showing up in Flash.  I figured we were missing a terminator.  Why flash wouldn't need a terminator on multiple submissions but need one on a single submission is beyond me, anyhow, anybody out there understand the reasoning behind this?  I'm consolidating some networking code and I really would like to eliminate this 'special case' in some fashion as I have two socket::send methods, one for normal properly behaving (imho) clients and one for flash that adds an extra zero byte explicitly into the TCP/IP stream. *** End Rant ***&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8065825275054912361?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8065825275054912361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/can-someone-please-explain-to-me-why.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8065825275054912361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8065825275054912361'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/can-someone-please-explain-to-me-why.html' title='Can someone please explain to me why Flash requires a zero byte terminator?'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5496646160677576137</id><published>2008-01-25T14:02:00.000-08:00</published><updated>2008-01-25T14:05:01.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ananova'/><category scheme='http://www.blogger.com/atom/ns#' term='dwarf crime'/><title type='text'>When dwarves go bad...</title><content type='html'>&lt;a href="http://www.ananova.com/"&gt;Ananova&lt;/a&gt; carried a rather amusing 'quirky' today related to the growing incidence of long distance coach robberies being carried out by dwarves...  &lt;a href="http://www.ananova.com/news/story/sm_2696358.html?menu=news.quirkies"&gt;Enjoy!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5496646160677576137?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5496646160677576137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/when-dwarves-go-bad.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5496646160677576137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5496646160677576137'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/when-dwarves-go-bad.html' title='When dwarves go bad...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1440509708412192074</id><published>2008-01-20T08:28:00.000-08:00</published><updated>2008-12-09T01:25:15.427-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offroad'/><category scheme='http://www.blogger.com/atom/ns#' term='middle aged stupidity'/><category scheme='http://www.blogger.com/atom/ns#' term='toys'/><title type='text'>New Toy Time!</title><content type='html'>&lt;div&gt;Mein Rich undt mein self now both have new off road toys! Yeah! He's a vastly more experienced motocross/trail rider than myself as I've not ridden like this in decades, so he's got the 'tear your arms out of your sockets' KDX and I've gotten myself what I think is a good beginner's bike, a 2002 KTM 400 EXC. It's a four stroke (the KDX is a two stroke monster) so it's a bit more docile but it's got good torque throughout the power band so I'm sure I can enjoy this bike for a long while to come.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5157597500478165826" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_RKtXwakvcTw/R5N3mb5xk0I/AAAAAAAAACs/9srWA-A2oI4/s400/2002+KTM+400+EXC.JPG" border="0" /&gt; &lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;We're headed off to something-town next Saturday, stay tuned for pictures of damaged bikes/riders/egos then! :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1440509708412192074?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1440509708412192074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/new-toy-time.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1440509708412192074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1440509708412192074'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/new-toy-time.html' title='New Toy Time!'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RKtXwakvcTw/R5N3mb5xk0I/AAAAAAAAACs/9srWA-A2oI4/s72-c/2002+KTM+400+EXC.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-3285910147262396039</id><published>2008-01-18T08:35:00.000-08:00</published><updated>2008-01-18T09:53:12.136-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='assemblies'/><category scheme='http://www.blogger.com/atom/ns#' term='gacutil'/><title type='text'>When gacutil /u goes bad (on Vista...)</title><content type='html'>Just a note to anyone using gacutil on Vista, make sure you start the command prompt with administrative permissions prior to trying to uninstall an assembly, otherwise you get the oh so informative "The process cannot access the file because it is being used by another process" message.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-3285910147262396039?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/3285910147262396039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/when-gacutil-u-goes-bad-on-vista.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3285910147262396039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/3285910147262396039'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/when-gacutil-u-goes-bad-on-vista.html' title='When gacutil /u goes bad (on Vista...)'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5448637976756317874</id><published>2008-01-14T09:08:00.001-08:00</published><updated>2008-12-09T01:25:15.610-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sweetness'/><title type='text'>A pattern developing...</title><content type='html'>I forgot to mention, when blogging about my new t-shirt from the boss, that a friend and previous co-worker had awarded me a 'Happy Bunny' to display on the door to my old office.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5155380876446634802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_RKtXwakvcTw/R4uXl75xkzI/AAAAAAAAACk/FF9l3hRIPCg/s400/Bunny.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;He mentioned that I left that out when talking about how sweet I am as a person, so in the interest of complete disclosure, there's my bunny :). &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5448637976756317874?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5448637976756317874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/pattern-developing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5448637976756317874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5448637976756317874'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/pattern-developing.html' title='A pattern developing...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RKtXwakvcTw/R4uXl75xkzI/AAAAAAAAACk/FF9l3hRIPCg/s72-c/Bunny.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2804742185515860082</id><published>2008-01-14T09:01:00.000-08:00</published><updated>2008-01-14T12:25:50.975-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>A side note on the C# class I recently posted...</title><content type='html'>You need to be aware that some processes, such as internet explorer (iexplore.exe) will detect the privilege level at which they are launched and potentially relaunch themselves with different privileges (usually when a higher privileged process launches a process into the session of a user with lower default process privileges), therefore if you are tracking the created process id from the class I provided beware of this issue as the instance of (using iexplore.exe as an example) internet explorer you have created will self-terminate after launching another instance of itself.&lt;br /&gt;&lt;br /&gt;When I get the chance I'll add a method to the class that overloads the current one for launching processes as a user which will accept an 'integrity level' in order to alleviate this issue. It isn't much of an issue currently; however, I'm not comfortable with processes running in user space with higher than default integrity levels. You would think this is a security issue but in actuality it appears to only effect iexplore.exe (I'm sure there must be something else that has this problem as well) because the DACLs and SACLs and process tokens security levels all match the user being impersonated so there's no apparent issue with a fear of security elevation (but you never know.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2804742185515860082?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2804742185515860082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/side-not-on-c-class-i-recently-posted.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2804742185515860082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2804742185515860082'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/side-not-on-c-class-i-recently-posted.html' title='A side note on the C# class I recently posted...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1192870028425579197</id><published>2008-01-14T06:14:00.000-08:00</published><updated>2008-01-14T06:57:05.149-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>I hope my frustration can help someone else out...</title><content type='html'>I've been building (when I get the opportunity when not fixing some critical issue) a failover and replication support architecture for 3rd party applications that will allow someone to remotely monitor when a mission critical application crashes and how to handle the response (i.e. start it back up? E-mail someone about the problem and then start it back up? Reboot the machine? Restart some associated services and only then start it back up?) There are, of course, many ways to solve each of these individual problems but I wanted more of an all in one solution. I also wanted to be able to connect to the machine running these services and applications and ask them for their current state (memory usage, CPU usage, et cetera), I also wanted a plugin system (so I could later add an update system/deployment system), and finally I wanted it to run as a windows service so that I could make use of the operating system's service failover capabilities (sorry *nix, this one is just for Windoze.) I hope I'll get a chance to port the feature set to a comparable daemon on *nix because I really like using Qt (for the UI.) Anyhow, this one is written in C# using .NET 2.0. Now, all that aside, now that I've partially established why I'm using a windows service, there's only one blocking issue to doing all of this - Vista. Now, this is actually a good thing. Let me explain the problem. On previous Microsoft Operating Systems you could mark a windows service as being allowed to 'interact with the desktop' when running as the SYSTEM account. This made it very simple for people to write services which interacted with the logged in session. Services could run in multiple sessions and were not isolated from desktops (in the kernel sense), not really. This meant that you could write a service that started up applications and the UI would show up on the user's desktop. You can no longer do this in Vista. Vista has 'hardened' services in two ways (one of which is actually present in XP if you have fast user switching.) The first, and most important way, is that Vista runs ALL services in session id 0. Nothing else is allowed to run in session id 0. Services are not allowed to run in other session ids. The second way is that due issues regarding fast user switching, some new security issues, and the ability (in some XP installs and Vista) to have several people logged on under an interactive session simultaneously, the services subsystem would need to be careful about whose actual desktop to place the UI associated with a spawned application by the service. So, the Vista team decided to eliminate the 'interact with desktop' service configuration checkbox (although the UI component still exists and you can check it, it has no affect in Vista), and put services in its own dedicated session. Now, if you want your service to have a UI, that's fine and it can do so easily if you don't mind the UI only showing up on the session id 0 desktop. When that happens the Operating System will interrupt the user and announce that a 'service has a message' it wishes them to see and will let you switch to viewing the session id 0 desktop (usually a grey desktop with nothing on it but the UI from your service.) If the UI is only related to your service this is very likely an acceptable solution. Then you're in luck and don't have to do anything special; however, I can't do that. So... If you're still reading this diatribe, here's the meat and potatoes. I've encapsulated, in a C# class, all the little things you need to do in Vista (and it works on XP and 2003 Server) in order to have a windows service spawn an application's process so that its UI shows up on the currently active console's session (this means the user who is actually actively using the system, not just logged in.) I hope it saves you an enormous amount of time because I was googling my a** off and didn't find anything that actually worked on Vista.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;div style="border:1px  solid; width:400px; height:600px; overflow:auto;"&gt;&lt;div style="font-family: Tahoma; font-size: 10pt; color: white; background: black;"&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;using&lt;/span&gt; System&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Reflection;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;using&lt;/span&gt; System&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Security&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Principal;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;using&lt;/span&gt; System&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Runtime&lt;span style="color: yellow;"&gt;.&lt;/span&gt;InteropServices;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;using&lt;/span&gt; System&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Diagnostics;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;namespace&lt;/span&gt; Common&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Utilities&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Processes&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;{&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;class&lt;/span&gt; &lt;span style="color: yellow;"&gt;ProcessUtilities&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*** Imports ***/&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Imports&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"advapi32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"AdjustTokenPrivileges"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; AdjustTokenPrivileges( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; in_hToken, [&lt;span style="color: yellow;"&gt;MarshalAs&lt;/span&gt;( &lt;span style="color: yellow;"&gt;UnmanagedType.&lt;/span&gt;Bool )]&lt;span style="color: yellow;"&gt;bool&lt;/span&gt; DisableAllPrivileges, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; &lt;span style="color: yellow;"&gt;TOKEN_PRIVILEGES&lt;/span&gt; NewState, &lt;span style="color: yellow;"&gt;UInt32&lt;/span&gt; BufferLength, &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; PreviousState, &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; ReturnLength );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"advapi32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"OpenProcessToken"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; OpenProcessToken( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; ProcessHandle, &lt;span style="color: yellow;"&gt;UInt32&lt;/span&gt; DesiredAccess, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; TokenHandle );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"advapi32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"LookupPrivilegeValue"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt;, CharSet &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;CharSet.&lt;/span&gt;Auto )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; LookupPrivilegeValue( &lt;span style="color: yellow;"&gt;string&lt;/span&gt; lpSystemName, &lt;span style="color: yellow;"&gt;string&lt;/span&gt; lpName, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; &lt;span style="color: yellow;"&gt;LUID&lt;/span&gt; lpLuid );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"userenv.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"CreateEnvironmentBlock"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; CreateEnvironmentBlock( &lt;span style="color: yellow;"&gt;out&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; out_ptrEnvironmentBlock, &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; in_ptrTokenHandle, &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; in_bInheritProcessEnvironment );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"kernel32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"CloseHandle"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; CloseHandle( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; handle );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"wtsapi32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"WTSQueryUserToken"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;31&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; WTSQueryUserToken( &lt;span style="color: yellow;"&gt;UInt32&lt;/span&gt; in_nSessionID, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; out_ptrTokenHandle );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;33&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"kernel32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"WTSGetActiveConsoleSessionId"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;uint&lt;/span&gt; WTSGetActiveConsoleSessionId();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;35&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;36&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"Wtsapi32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"WTSQuerySessionInformation"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;37&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; WTSQuerySessionInformation( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hServer, &lt;span style="color: yellow;"&gt;int&lt;/span&gt; sessionId, &lt;span style="color: yellow;"&gt;WTS_INFO_CLASS&lt;/span&gt; wtsInfoClass, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; ppBuffer, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; &lt;span style="color: yellow;"&gt;uint&lt;/span&gt; pBytesReturned );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;38&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;39&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"wtsapi32.dll"&lt;/span&gt;, EntryPoint&lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"WTSFreeMemory"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;false&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;40&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;void&lt;/span&gt; WTSFreeMemory( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; memory );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;41&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;42&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"userenv.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"LoadUserProfile"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt; )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;43&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; LoadUserProfile( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hToken, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; &lt;span style="color: yellow;"&gt;PROFILEINFO&lt;/span&gt; lpProfileInfo );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;44&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;45&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;DllImport&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"advapi32.dll"&lt;/span&gt;, EntryPoint &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;"CreateProcessAsUser"&lt;/span&gt;, SetLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt;, CharSet &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;CharSet.&lt;/span&gt;Auto )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;46&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;extern&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; CreateProcessAsUser( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; in_ptrUserTokenHandle, &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strApplicationName, &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strCommandLine, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; &lt;span style="color: yellow;"&gt;SECURITY_ATTRIBUTES&lt;/span&gt; in_oProcessAttributes, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; &lt;span style="color: yellow;"&gt;SECURITY_ATTRIBUTES&lt;/span&gt; in_oThreadAttributes, &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; in_bInheritHandles, &lt;span style="color: yellow;"&gt;CreationFlags&lt;/span&gt; in_eCreationFlags, &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; in_ptrEnvironmentBlock, &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strCurrentDirectory, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; &lt;span style="color: yellow;"&gt;STARTUPINFO&lt;/span&gt; in_oStartupInfo, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; &lt;span style="color: yellow;"&gt;PROCESS_INFORMATION&lt;/span&gt; in_oProcessInformation );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;47&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;48&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt; &lt;span style="color: lime;"&gt;//Imports&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;49&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;50&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*** Delegates ***/&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;51&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;52&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*** Structs ***/&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;53&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Structs&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;54&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;55&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;StructLayout&lt;/span&gt;( &lt;span style="color: yellow;"&gt;LayoutKind.&lt;/span&gt;Sequential )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;56&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;struct&lt;/span&gt; &lt;span style="color: yellow;"&gt;LUID&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;57&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;58&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;uint&lt;/span&gt; m_nLowPart;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;59&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;uint&lt;/span&gt; m_nHighPart;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;60&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;61&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;62&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;StructLayout&lt;/span&gt;( &lt;span style="color: yellow;"&gt;LayoutKind.&lt;/span&gt;Sequential )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;63&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;struct&lt;/span&gt; &lt;span style="color: yellow;"&gt;TOKEN_PRIVILEGES&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;64&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;65&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; m_nPrivilegeCount;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;66&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;LUID&lt;/span&gt; m_oLUID;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;67&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; m_nAttributes;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;68&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;69&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;70&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;StructLayout&lt;/span&gt;( &lt;span style="color: yellow;"&gt;LayoutKind.&lt;/span&gt;Sequential )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;71&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;struct&lt;/span&gt; &lt;span style="color: yellow;"&gt;PROFILEINFO&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;72&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;73&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; dwSize;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;74&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; dwFlags;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;75&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;MarshalAs&lt;/span&gt;( &lt;span style="color: yellow;"&gt;UnmanagedType.&lt;/span&gt;LPTStr )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;76&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;String&lt;/span&gt; lpUserName;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;77&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;MarshalAs&lt;/span&gt;( &lt;span style="color: yellow;"&gt;UnmanagedType.&lt;/span&gt;LPTStr )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;78&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;String&lt;/span&gt; lpProfilePath;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;79&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;MarshalAs&lt;/span&gt;( &lt;span style="color: yellow;"&gt;UnmanagedType.&lt;/span&gt;LPTStr )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;80&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;String&lt;/span&gt; lpDefaultPath;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;81&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;MarshalAs&lt;/span&gt;( &lt;span style="color: yellow;"&gt;UnmanagedType.&lt;/span&gt;LPTStr )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;82&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;String&lt;/span&gt; lpServerName;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;83&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;MarshalAs&lt;/span&gt;( &lt;span style="color: yellow;"&gt;UnmanagedType.&lt;/span&gt;LPTStr )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;84&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;String&lt;/span&gt; lpPolicyPath;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;85&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hProfile;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;86&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;87&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;88&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;StructLayout&lt;/span&gt;( &lt;span style="color: yellow;"&gt;LayoutKind.&lt;/span&gt;Sequential )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;89&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;struct&lt;/span&gt; &lt;span style="color: yellow;"&gt;STARTUPINFO&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;90&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;91&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; cb;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;92&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;string&lt;/span&gt; lpReserved;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;93&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;string&lt;/span&gt; lpDesktop;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;94&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;string&lt;/span&gt; lpTitle;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;95&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwX;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;96&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwY;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;97&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwXSize;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;98&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwXCountChars;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;99&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwYCountChars;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;100&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwFillAttribute;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;101&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwFlags;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;102&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int16&lt;/span&gt; wShowWindow;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;103&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int16&lt;/span&gt; cbReserved2;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;104&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; lpReserved2;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;105&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hStdInput;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;106&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hStdOutput;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;107&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hStdError;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;108&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;109&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;110&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;StructLayout&lt;/span&gt;( &lt;span style="color: yellow;"&gt;LayoutKind.&lt;/span&gt;Sequential )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;111&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;struct&lt;/span&gt; &lt;span style="color: yellow;"&gt;PROCESS_INFORMATION&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;112&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;113&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hProcess;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;114&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; hThread;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;115&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwProcessID;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;116&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; dwThreadID;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;117&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;118&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;119&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: yellow;"&gt;StructLayout&lt;/span&gt;( &lt;span style="color: yellow;"&gt;LayoutKind.&lt;/span&gt;Sequential )]&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;120&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;struct&lt;/span&gt; &lt;span style="color: yellow;"&gt;SECURITY_ATTRIBUTES&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;121&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;122&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;Int32&lt;/span&gt; Length;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;123&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; lpSecurityDescriptor;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;124&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; bInheritHandle;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;125&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;126&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;127&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt; &lt;span style="color: lime;"&gt;//Structs&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;128&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;129&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*** Classes ***/&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;130&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;131&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*** Enums ***/&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;132&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Enums&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;133&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;134&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;enum&lt;/span&gt; &lt;span style="color: yellow;"&gt;CreationFlags&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;135&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;136&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE_SUSPENDED &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x00000004&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;137&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE_NEW_CONSOLE &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x00000010&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;138&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE_NEW_PROCESS_GROUP &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x00000200&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;139&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE_UNICODE_ENVIRONMENT &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x00000400&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;140&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE_SEPARATE_WOW_VDM &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x00000800&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;141&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CREATE_DEFAULT_ERROR_MODE &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x04000000&lt;/span&gt;,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;142&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;143&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;144&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;enum&lt;/span&gt; &lt;span style="color: yellow;"&gt;WTS_INFO_CLASS&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;145&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;146&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSInitialProgram,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;147&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSApplicationName,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;148&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSWorkingDirectory,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;149&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSOEMId,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;150&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSSessionId,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;151&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSUserName,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;152&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSWinStationName,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;153&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSDomainName,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;154&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSConnectState,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;155&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientBuildNumber,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;156&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientName,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;157&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientDirectory,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;158&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientProductId,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;159&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientHardwareId,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;160&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientAddress,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;161&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientDisplay,&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;162&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSClientProtocolType&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;163&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;164&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;165&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt; &lt;span style="color: lime;"&gt;//Enums&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;166&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;167&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*** Defines ***/&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;168&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Defines&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;169&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;170&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;private&lt;/span&gt; &lt;span style="color: yellow;"&gt;const&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; TOKEN_QUERY &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x08&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;171&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;private&lt;/span&gt; &lt;span style="color: yellow;"&gt;const&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; TOKEN_ADJUST_PRIVILEGES &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x20&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;172&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;private&lt;/span&gt; &lt;span style="color: yellow;"&gt;const&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; SE_PRIVILEGE_ENABLED &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0x02&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;173&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;174&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;const&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; ERROR_NO_TOKEN&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;1008&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;175&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;const&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; RPC_S_INVALID_BINDING&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;1702&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;176&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;177&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt; &lt;span style="color: lime;"&gt;//Defines&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;178&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;179&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*** Methods ***/&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;180&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Methods&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;181&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;182&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;183&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; If you need to give yourself permissions to inspect processes for their modules,&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;184&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; and create tokens without worrying about what account you're running under,&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;185&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this is the method for you :) (such as the token privilege "SeDebugPrivilege")&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;186&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;187&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;bool&lt;/span&gt; AdjustProcessTokenPrivileges( &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; in_ptrProcessHandle, &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strTokenToEnable )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;188&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;189&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; l_hProcess &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;190&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; l_hToken &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;191&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;LUID&lt;/span&gt; l_oRestoreLUID;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;192&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;TOKEN_PRIVILEGES&lt;/span&gt; l_oTokenPrivileges;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;193&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;194&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;Debug.&lt;/span&gt;Assert( in_ptrProcessHandle &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;195&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;196&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//Get the process security token&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;197&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; OpenProcessToken( in_ptrProcessHandle, TOKEN_ADJUST_PRIVILEGES &lt;span style="color: yellow;"&gt;|&lt;/span&gt; TOKEN_QUERY, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; l_hToken ) )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;198&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;199&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; &lt;span style="color: yellow;"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;200&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;201&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;202&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//Lookup the LUID for the privilege we need&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;203&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; LookupPrivilegeValue( &lt;span style="color: yellow;"&gt;String.&lt;/span&gt;Empty, in_strTokenToEnable, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; l_oRestoreLUID ) )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;204&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;205&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; &lt;span style="color: yellow;"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;206&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;207&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;208&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//Adjust the privileges of the current process to include the new privilege&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;209&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oTokenPrivileges&lt;span style="color: yellow;"&gt;.&lt;/span&gt;m_nPrivilegeCount &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;1&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;210&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oTokenPrivileges&lt;span style="color: yellow;"&gt;.&lt;/span&gt;m_oLUID &lt;span style="color: yellow;"&gt;=&lt;/span&gt; l_oRestoreLUID;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;211&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oTokenPrivileges&lt;span style="color: yellow;"&gt;.&lt;/span&gt;m_nAttributes &lt;span style="color: yellow;"&gt;=&lt;/span&gt; SE_PRIVILEGE_ENABLED;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;212&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;213&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; AdjustTokenPrivileges( l_hToken, &lt;span style="color: yellow;"&gt;false&lt;/span&gt;, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; l_oTokenPrivileges, &lt;span style="color: aqua;"&gt;0&lt;/span&gt;, &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero, &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero ) )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;214&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;215&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; &lt;span style="color: yellow;"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;216&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;217&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;218&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; &lt;span style="color: yellow;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;219&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;220&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;221&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;222&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Start a process the simplest way you can imagine&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;223&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;224&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; SimpleProcessStart( &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strTarget, &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strArguments )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;225&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;226&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;Process&lt;/span&gt; l_oProcess &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Process&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;227&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;Debug.&lt;/span&gt;Assert( l_oProcess &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; &lt;span style="color: yellow;"&gt;null&lt;/span&gt; );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;228&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;229&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oProcess&lt;span style="color: yellow;"&gt;.&lt;/span&gt;StartInfo&lt;span style="color: yellow;"&gt;.&lt;/span&gt;FileName &lt;span style="color: yellow;"&gt;=&lt;/span&gt; in_strTarget;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;230&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oProcess&lt;span style="color: yellow;"&gt;.&lt;/span&gt;StartInfo&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Arguments &lt;span style="color: yellow;"&gt;=&lt;/span&gt; in_strArguments;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;231&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;232&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;true&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; l_oProcess&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Start() )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;233&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;234&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; l_oProcess&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Id;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;235&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;236&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;237&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; &lt;span style="color: yellow;"&gt;-&lt;/span&gt;&lt;span style="color: aqua;"&gt;1&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;238&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;239&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;240&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;241&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; All the magic is in the call to WTSQueryUserToken, it saves you changing DACLs,&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;242&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; process tokens, pulling the SID, manipulating the Windows Station and Desktop&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;243&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (and its DACLs) - if you don't know what those things are, you're lucky and should&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;244&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; be on your knees thanking God at this moment.&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;245&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;246&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DEV NOTE:&amp;nbsp; This method currently ASSumes that it should impersonate the user&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;247&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; who is logged into session 1 (if more than one user is logged in, each&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;248&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; user will have a session of their own which means that if user switching&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;249&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; is going on, this method could start a process whose UI shows up in&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;250&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; the session of the user who is not actually using the machine at this&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;251&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; moment.)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;252&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;253&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DEV NOTE 2:&amp;nbsp;&amp;nbsp;&amp;nbsp; If the process being started is a binary which decides, based upon&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;254&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; the user whose session it is being created in, to relaunch with a&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;255&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; different integrity level (such as Internet Explorer), the process&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;256&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; id will change immediately and the Process Manager will think&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;257&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; that the process has died (because in actuality the process it&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;258&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; launched DID in fact die only that it was due to self-termination)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;259&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; This means beware of using this service to startup such applications&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;260&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; although it can connect to them to alarm in case of failure, just&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;261&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; make sure you don't configure it to restart it or you'll get non&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;262&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; stop process creation ;)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;263&lt;/span&gt;&amp;nbsp;&lt;span style="color: lime;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;264&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;static&lt;/span&gt; &lt;span style="color: yellow;"&gt;public&lt;/span&gt; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; CreateUIProcessForServiceRunningAsLocalSystem( &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strTarget, &lt;span style="color: yellow;"&gt;string&lt;/span&gt; in_strArguments )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;265&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;266&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;PROCESS_INFORMATION&lt;/span&gt; l_oProcessInformation &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;PROCESS_INFORMATION&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;267&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;SECURITY_ATTRIBUTES&lt;/span&gt; l_oSecurityAttributes &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;SECURITY_ATTRIBUTES&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;268&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;STARTUPINFO&lt;/span&gt; l_oStartupInfo &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;STARTUPINFO&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;269&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;PROFILEINFO&lt;/span&gt; l_oProfileInfo &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;PROFILEINFO&lt;/span&gt;();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;270&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; l_ptrUserToken &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt;( &lt;span style="color: aqua;"&gt;0&lt;/span&gt; );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;271&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;uint&lt;/span&gt; l_nActiveUserSessionId &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0xFFFFFFFF&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;272&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;string&lt;/span&gt; l_strActiveUserName &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;""&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;273&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; l_nProcessID &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;-&lt;/span&gt;&lt;span style="color: aqua;"&gt;1&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;274&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; l_ptrBuffer &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;275&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;uint&lt;/span&gt; l_nBytes &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: aqua;"&gt;0&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;276&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;277&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;278&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;279&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//The currently active user is running what session?&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;280&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_nActiveUserSessionId &lt;span style="color: yellow;"&gt;=&lt;/span&gt; WTSGetActiveConsoleSessionId();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;281&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;282&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( l_nActiveUserSessionId &lt;span style="color: yellow;"&gt;==&lt;/span&gt; &lt;span style="color: aqua;"&gt;0xFFFFFFFF&lt;/span&gt; )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;283&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;284&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"The call to WTSGetActiveConsoleSessionId failed,&amp;nbsp; GetLastError returns: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;GetLastWin32Error()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;ToString() );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;285&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;286&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;287&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; WTSQuerySessionInformation( &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero, (&lt;span style="color: yellow;"&gt;int&lt;/span&gt;)l_nActiveUserSessionId, &lt;span style="color: yellow;"&gt;WTS_INFO_CLASS.&lt;/span&gt;WTSUserName, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; l_ptrBuffer, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; l_nBytes ) )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;288&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;289&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; l_nLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;GetLastWin32Error();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;290&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;291&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//On earlier operating systems from Vista, when no one is logged in, you get RPC_S_INVALID_BINDING which is ok, we just won't impersonate&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;292&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( l_nLastError &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; RPC_S_INVALID_BINDING )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;293&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;294&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"The call to WTSQuerySessionInformation failed,&amp;nbsp; GetLastError returns: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;GetLastWin32Error()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;ToString() );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;295&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;296&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;297&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//No one logged in so let's just do this the simple way&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;298&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; SimpleProcessStart( in_strTarget, in_strArguments );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;299&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;300&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;301&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_strActiveUserName &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;PtrToStringAnsi( l_ptrBuffer );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;302&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WTSFreeMemory( l_ptrBuffer );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;303&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;304&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//We are supposedly running as a service so we're going to be running in session 0 so get a user token from the active user session&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;305&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; WTSQueryUserToken( (&lt;span style="color: yellow;"&gt;uint&lt;/span&gt;)l_nActiveUserSessionId, &lt;span style="color: yellow;"&gt;out&lt;/span&gt; l_ptrUserToken ) )&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;306&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;307&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;int&lt;/span&gt; l_nLastError &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;GetLastWin32Error();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;308&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;309&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//Remember, sometimes nobody is logged in (especially when we're set to Automatically startup) you should get error code 1008 (no user token available)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;310&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( ERROR_NO_TOKEN &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; l_nLastError )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;311&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;312&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//Ensure we're running under the local system account&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;313&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;WindowsIdentity&lt;/span&gt; l_oIdentity &lt;span style="color: yellow;"&gt;=&lt;/span&gt; System&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Security&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Principal&lt;span style="color: yellow;"&gt;.WindowsIdentity.&lt;/span&gt;GetCurrent();&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;314&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;315&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"NT AUTHORITY\\SYSTEM"&lt;/span&gt; &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; l_oIdentity&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;316&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;317&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"The call to WTSQueryUserToken failed and querying the process' account identity results in an identity which does not match 'NT AUTHORITY\\SYSTEM' but instead returns the name:"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; l_oIdentity&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"&amp;nbsp; GetLastError returns: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; l_nLastError&lt;span style="color: yellow;"&gt;.&lt;/span&gt;ToString() );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;318&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;319&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;320&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"The call to WTSQueryUserToken failed, GetLastError returns: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; l_nLastError&lt;span style="color: yellow;"&gt;.&lt;/span&gt;ToString() );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;321&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;322&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;323&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//No one logged in so let's just do this the simple way&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;324&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; SimpleProcessStart( in_strTarget, in_strArguments );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;325&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;326&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;327&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//Create an appropriate environment block for this user token (if we have one)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;328&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;IntPtr&lt;/span&gt; l_ptrEnvironment &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;329&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;330&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;Debug.&lt;/span&gt;Assert( l_ptrUserToken &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;331&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;332&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; CreateEnvironmentBlock( &lt;span style="color: yellow;"&gt;out&lt;/span&gt; l_ptrEnvironment, l_ptrUserToken, &lt;span style="color: yellow;"&gt;false&lt;/span&gt; ) )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;333&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;334&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"The call to CreateEnvironmentBlock failed, GetLastError returns: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;GetLastWin32Error()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;ToString() );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;335&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;336&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;337&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oSecurityAttributes&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Length &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;SizeOf( l_oSecurityAttributes );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;338&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oStartupInfo&lt;span style="color: yellow;"&gt;.&lt;/span&gt;cb &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;SizeOf( l_oStartupInfo );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;339&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;340&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//DO NOT set this to "winsta0\\default" (even though many online resources say to do so)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;341&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oStartupInfo&lt;span style="color: yellow;"&gt;.&lt;/span&gt;lpDesktop &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;String.&lt;/span&gt;Empty;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;342&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oProfileInfo&lt;span style="color: yellow;"&gt;.&lt;/span&gt;dwSize &lt;span style="color: yellow;"&gt;=&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;SizeOf( l_oProfileInfo );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;343&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_oProfileInfo&lt;span style="color: yellow;"&gt;.&lt;/span&gt;lpUserName &lt;span style="color: yellow;"&gt;=&lt;/span&gt; l_strActiveUserName;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;344&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;345&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//Remember, sometimes nobody is logged in (especially when we're set to Automatically startup)&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;346&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; LoadUserProfile( l_ptrUserToken, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; l_oProfileInfo ) )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;347&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;348&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"The call to LoadUserProfile failed, GetLastError returns: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;GetLastWin32Error()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;ToString() );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;349&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;350&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;351&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( &lt;span style="color: yellow;"&gt;false&lt;/span&gt; &lt;span style="color: yellow;"&gt;==&lt;/span&gt; CreateProcessAsUser( l_ptrUserToken, in_strTarget, &lt;span style="color: yellow;"&gt;String.&lt;/span&gt;Empty, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; l_oSecurityAttributes, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; l_oSecurityAttributes, &lt;span style="color: yellow;"&gt;false&lt;/span&gt;, &lt;span style="color: yellow;"&gt;CreationFlags.&lt;/span&gt;CREATE_UNICODE_ENVIRONMENT, l_ptrEnvironment, &lt;span style="color: yellow;"&gt;null&lt;/span&gt;, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; l_oStartupInfo, &lt;span style="color: yellow;"&gt;ref&lt;/span&gt; l_oProcessInformation ) )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;352&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;353&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: lime;"&gt;//System.Diagnostics.EventLog.WriteEntry( "CreateProcessAsUser FAILED", Marshal.GetLastWin32Error().ToString() );&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;354&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"The call to CreateProcessAsUser failed, GetLastError returns: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;Marshal.&lt;/span&gt;GetLastWin32Error()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;ToString() );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;355&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;356&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;357&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l_nProcessID &lt;span style="color: yellow;"&gt;=&lt;/span&gt; l_oProcessInformation&lt;span style="color: yellow;"&gt;.&lt;/span&gt;dwProcessID;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;358&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;359&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;catch&lt;/span&gt;( &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt; l_oException )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;360&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;361&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;throw&lt;/span&gt; &lt;span style="color: yellow;"&gt;new&lt;/span&gt; &lt;span style="color: yellow;"&gt;Exception&lt;/span&gt;( &lt;span style="color: aqua;"&gt;"ProcessUtilities"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: yellow;"&gt;MethodInfo.&lt;/span&gt;GetCurrentMethod()&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Name &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"-&amp;gt;"&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; &lt;span style="color: aqua;"&gt;"An unhandled exception was caught spawning the process, the exception was: "&lt;/span&gt; &lt;span style="color: yellow;"&gt;+&lt;/span&gt; l_oException&lt;span style="color: yellow;"&gt;.&lt;/span&gt;Message );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;362&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;363&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;finally&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;364&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;365&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( l_oProcessInformation&lt;span style="color: yellow;"&gt;.&lt;/span&gt;hProcess &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;366&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;367&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle( l_oProcessInformation&lt;span style="color: yellow;"&gt;.&lt;/span&gt;hProcess );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;368&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;369&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;if&lt;/span&gt;( l_oProcessInformation&lt;span style="color: yellow;"&gt;.&lt;/span&gt;hThread &lt;span style="color: yellow;"&gt;!=&lt;/span&gt; &lt;span style="color: yellow;"&gt;IntPtr.&lt;/span&gt;Zero )&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;370&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;371&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle( l_oProcessInformation&lt;span style="color: yellow;"&gt;.&lt;/span&gt;hThread );&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;372&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;373&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;374&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;375&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: yellow;"&gt;return&lt;/span&gt; l_nProcessID;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;376&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;377&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;378&lt;/span&gt;&amp;nbsp;&lt;span style="color: yellow;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt; &lt;span style="color: lime;"&gt;//Methods&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;379&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #2b91af;"&gt;&amp;nbsp;&amp;nbsp;380&lt;/span&gt;&amp;nbsp;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1192870028425579197?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1192870028425579197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/i-hope-my-frustration-can-help-someone.html#comment-form' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1192870028425579197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1192870028425579197'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/i-hope-my-frustration-can-help-someone.html' title='I hope my frustration can help someone else out...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-7534806803730500597</id><published>2008-01-13T17:51:00.000-08:00</published><updated>2008-12-09T01:25:15.781-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sweetness'/><title type='text'>CEO telling me something...?</title><content type='html'>Our CEO gave me a belated Christmas present this past week when he came to town. I'm not sure what he's trying to intimate but he said "I thought of you" when he saw this shirt... It fits, I'll wear it. :)&lt;img id="BLOGGER_PHOTO_ID_5155144455676859170" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_RKtXwakvcTw/R4rAkb5xkyI/AAAAAAAAACc/KIIzKaGw_yo/s400/Despite.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Is he suggesting that I adopt a certain 'terse-ness' when people ask me what they believe are intelligent technical questions...? I hope not. I'm usually so sweet people call me 'toothache.'&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-7534806803730500597?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/7534806803730500597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2008/01/ceo-telling-me-something.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7534806803730500597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7534806803730500597'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2008/01/ceo-telling-me-something.html' title='CEO telling me something...?'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RKtXwakvcTw/R4rAkb5xkyI/AAAAAAAAACc/KIIzKaGw_yo/s72-c/Despite.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5088993821712866287</id><published>2007-12-21T15:50:00.000-08:00</published><updated>2008-12-09T01:25:15.928-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Crackdealer Jeff'/><title type='text'>Another way to ruin your deadlines...</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_RKtXwakvcTw/R2xRnL5xkxI/AAAAAAAAACU/vY9YhFs6T8U/s1600-h/Rice+Game.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5146578207829496594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_RKtXwakvcTw/R2xRnL5xkxI/AAAAAAAAACU/vY9YhFs6T8U/s400/Rice+Game.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;...found on the web (thanks for the net-crack Jeffrey!)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.freerice.com/index.php"&gt;http://www.freerice.com/index.php&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It took me a while to get to level 48 and I'm sure I'll be playing this for another 30 minutes sadly. I'll be visiting this page a bunch.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5088993821712866287?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5088993821712866287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/12/another-way-to-ruin-your-deadlines.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5088993821712866287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5088993821712866287'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/12/another-way-to-ruin-your-deadlines.html' title='Another way to ruin your deadlines...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RKtXwakvcTw/R2xRnL5xkxI/AAAAAAAAACU/vY9YhFs6T8U/s72-c/Rice+Game.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-468307873696133317</id><published>2007-12-21T13:37:00.000-08:00</published><updated>2008-01-03T06:40:05.214-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='services'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>If you're building a C# webservice...</title><content type='html'>...and you've given your service an auto-installer you may run into the problem I ran into today. Hopefully I can save you the immense frustration I experienced by leaving this tip for you.&lt;br /&gt;&lt;br /&gt;When you build your service and see something like:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Microsoft.Common.targets(3090,13): error MSB3073: The command "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\installutil.exe -u "C:\Users\hans\Desktop\Process Manager\Process Manager.exe" "C:\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(3090,13): error MSB3073: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\installutil.exe "C:\Users\hans\Desktop\Process Manager\Process Manager.exe"" exited with code -1.&lt;br /&gt;&lt;br /&gt;Don't bother googling, don't bother reading Microsoft's support site(s), don't bother combing enwsgroups. Just make sure you don't have a process instance of your service running in the background, then open a command prompt (as Administrator) and use the SC.exe utility to delete your service from the services list. If you get 'Access Denied' ensure, again, that you don't have a process instance of your service running. You will likely get past the 'Access Denied' and either get a success message or a message saying the service is not registered so it could not be deleted. Either way you're fixed now. Try rebuilding your service again. This most often arises if you're using the 'Debug version of service run as normal application instead of service' debugging trick.&lt;br /&gt;&lt;br /&gt;This was driving me crazy earlier this week and I don't want to try to remember it in 12 months when it happens to me again...&lt;br /&gt;&lt;br /&gt;P.S. 'Access Denied' reported by SC.exe after you've killed any errant process instances usually means that the Services.msc component (the services applet) is open and was hung trying to start it. Just close the applet and try the "SC.exe delete "&lt;my&gt;" command again and you'll be golden.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-468307873696133317?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/468307873696133317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/12/if-youre-building-c-webservice.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/468307873696133317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/468307873696133317'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/12/if-youre-building-c-webservice.html' title='If you&apos;re building a C# webservice...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-6988772299083587551</id><published>2007-11-29T13:08:00.001-08:00</published><updated>2008-12-09T01:25:16.379-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iTunes'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Gadgets'/><title type='text'>Cool iTunes gadget for Vista Sidebar</title><content type='html'>I very much enjoy using Vista (despite all the FUD) although it isn't particularly more spectacular than XP Pro, it isn't much prettier than any of my KDE desktops, and it's probably quite similar to OSX (I have not used OSX for years so I'm no judge of what it does/n't do excepting what I read online from people I deem at least remotely reputable. I've been seriously considering building some gadgets for myself; however, I just found a gadget I was planning on writing (thanks for saving me the trouble mysterious gadget man!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_RKtXwakvcTw/R08tyv6g9kI/AAAAAAAAACM/CtOqi2EiTKs/s1600-h/SidebarITunesGadget.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5138376049731630658" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_RKtXwakvcTw/R08tyv6g9kI/AAAAAAAAACM/CtOqi2EiTKs/s400/SidebarITunesGadget.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can see the gadget on the right side of the full size image (please excuse the code in the IDE I'm hurriedly writing a screen capture test...)&lt;br /&gt;&lt;br /&gt;It is a gadget for controlling iTunes from your sidebar and it shows album art as well. Very nice; however, if you do not start iTunes by default on your machine when booting up, this gadget will do so from now on. There's currently no option for disabling this either (so I may end up writing one in any case.) I've been thinking of writing a 'live thumbnail' UI utility anyhow (it would use the DWM thumbnail manager and whatever window you wanted watched you could manipulate its controls from the sidebar thumbnail. May not sound useful to you, but for myself (with several desktops in addition to a multi-monitor setup believe me it *is* useful, lol...&lt;br /&gt;&lt;br /&gt;Anywho - Enough jawing/clacking. Here is a link to the gadget:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gallery.live.com/liveItemDetail.aspx?li=0fe691e3-738a-477d-a92e-b79ef7b5ab1d&amp;amp;l=1"&gt;Vista iTunes Gadget&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-6988772299083587551?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/6988772299083587551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/11/cool-itunes-gadget-for-vista-sidebar.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6988772299083587551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6988772299083587551'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/11/cool-itunes-gadget-for-vista-sidebar.html' title='Cool iTunes gadget for Vista Sidebar'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RKtXwakvcTw/R08tyv6g9kI/AAAAAAAAACM/CtOqi2EiTKs/s72-c/SidebarITunesGadget.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8796226942005471715</id><published>2007-11-14T07:40:00.001-08:00</published><updated>2007-11-14T15:07:04.972-08:00</updated><title type='text'></title><content type='html'>&lt;table width=350 align=center border=0 cellspacing=0 cellpadding=2&gt;&lt;tr&gt;&lt;td bgcolor="#CCCCCC" align=center&gt;&lt;br /&gt;&lt;font face="Georgia, Times New Roman, Times, serif" style='color:black; font-size: 14pt;'&gt;&lt;br /&gt;&lt;strong&gt;Your Linguistic Profile:&lt;/strong&gt;&lt;br /&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td bgcolor="#DDDDDD"&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://images.blogthings.com/whatkindofamericanenglishdoyouspeakquiz/general.jpg" height="100" width="100"&gt;&lt;/center&gt;&lt;br /&gt;&lt;font color="#000000"&gt;&lt;br /&gt;45% General American English&lt;br /&gt;&lt;br /&gt;25% Yankee&lt;br /&gt;&lt;br /&gt;20% Dixie&lt;br /&gt;&lt;br /&gt;5% Midwestern&lt;br /&gt;&lt;br /&gt;0% Upper Midwestern&lt;br /&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.blogthings.com/whatkindofamericanenglishdoyouspeakquiz/"&gt;What Kind of American English Do You Speak?&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8796226942005471715?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8796226942005471715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/11/your-linguistic-profile-45-general.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8796226942005471715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8796226942005471715'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/11/your-linguistic-profile-45-general.html' title=''/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-9129830717309437723</id><published>2007-09-26T12:01:00.000-07:00</published><updated>2008-12-09T01:25:16.527-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nerdilicous'/><category scheme='http://www.blogger.com/atom/ns#' term='geekery'/><category scheme='http://www.blogger.com/atom/ns#' term='Lego'/><category scheme='http://www.blogger.com/atom/ns#' term='Christmas'/><title type='text'>OMFG - I know what I'm getting for Christmas...</title><content type='html'>I've seen a lot of cool nerdilicous geekery before, but this bad boy takes the cake. God bless you Lego people!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shop.lego.com/product/Default.aspx?p=10179&amp;amp;LangId=2057" target="blank_"&gt;Millenium Falcon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5114590677935634450" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_RKtXwakvcTw/RvqtH5HguBI/AAAAAAAAAB0/qlPyY4ttn54/s400/mf.jpg" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-9129830717309437723?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/9129830717309437723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/09/omfg-i-know-what-im-getting-for.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/9129830717309437723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/9129830717309437723'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/09/omfg-i-know-what-im-getting-for.html' title='OMFG - I know what I&apos;m getting for Christmas...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RKtXwakvcTw/RvqtH5HguBI/AAAAAAAAAB0/qlPyY4ttn54/s72-c/mf.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-6633466652354072503</id><published>2007-09-19T12:26:00.000-07:00</published><updated>2008-12-09T01:25:16.695-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Broken Man'/><category scheme='http://www.blogger.com/atom/ns#' term='Foosball'/><title type='text'>Broken man again... What is going on?</title><content type='html'>&lt;div&gt;This thing used to be a nightmare to offload. Now, the Broken Man trophy seems to be changing hands on a day to day basis.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Perhaps I should retire from Foosball...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5112002965502060930" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_RKtXwakvcTw/RvF7nNF-aYI/AAAAAAAAABs/U7FYI9tNO-c/s400/trophy+winners.JPG" border="0" /&gt; &lt;div&gt;Oh, by the way, congratulations go to the latest recipients: Dave and Leah :)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-6633466652354072503?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/6633466652354072503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/09/broken-man-again-what-is-going-on.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6633466652354072503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6633466652354072503'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/09/broken-man-again-what-is-going-on.html' title='Broken man again... What is going on?'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RKtXwakvcTw/RvF7nNF-aYI/AAAAAAAAABs/U7FYI9tNO-c/s72-c/trophy+winners.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-9059055689961983667</id><published>2007-09-07T10:33:00.001-07:00</published><updated>2008-12-09T01:25:16.867-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Broken Man'/><category scheme='http://www.blogger.com/atom/ns#' term='Foosball'/><title type='text'>Do NOT club the baby seals</title><content type='html'>Two members of our foosing community succeeded this morning in clubbing a couple of relative newbies to foos and thereby transferring the 'Broken Man' trophy (yet again) to J.P. and Salman. Now I, for one, took great offense and umbrage at such a breach of foos ettiquette as to setup a match explicitly for the purpose of offloading the infamous trophy; ergo, I took it upon myself to challenge Vasu and The Rookie (tm 2007) to a 2 on 1 game. If I won, they would have to take the trophies back. If they won, I would have to donate $10 to a charity of their choice (specified by their holding open their pockets.) I can't believe they accepted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5107518363649050466" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_RKtXwakvcTw/RuGM5BUWB2I/AAAAAAAAABk/uPSir8JU7mo/s400/losers.jpg" border="0" /&gt; &lt;div align="center"&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;(nice hats ladies)&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;br /&gt;Twenty minutes later:&lt;br /&gt;&lt;br /&gt;Vasu and The Rookie (tm) had their individual trophies adorning their office cubes. That should teach them not to club baby seals on my watch...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-9059055689961983667?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/9059055689961983667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/09/do-not-club-baby-seals.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/9059055689961983667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/9059055689961983667'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/09/do-not-club-baby-seals.html' title='Do NOT club the baby seals'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_RKtXwakvcTw/RuGM5BUWB2I/AAAAAAAAABk/uPSir8JU7mo/s72-c/losers.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1870604214862506330</id><published>2007-09-05T10:12:00.000-07:00</published><updated>2008-12-09T01:25:16.958-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Broken Man'/><category scheme='http://www.blogger.com/atom/ns#' term='Foosball'/><title type='text'>The Broken Man has changed hands...</title><content type='html'>...yet again. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;9/5/2007 @ 13:05: J.P. and myself crushed our opposition. You could hear the lamentations of their women, the soul-wrenching scream as the final goal went in to mark 10-0. It was magical.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our hapless victims can be seen below:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="left"&gt;&lt;img id="BLOGGER_PHOTO_ID_5106773788118615890" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_RKtXwakvcTw/Rt7ntBUWB1I/AAAAAAAAABc/S5QsAq8rt0I/s400/hapless+victims.JPG" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;Good luck losing that trophy you two! :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1870604214862506330?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1870604214862506330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/09/broken-man-has-changed-hands.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1870604214862506330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1870604214862506330'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/09/broken-man-has-changed-hands.html' title='The Broken Man has changed hands...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RKtXwakvcTw/Rt7ntBUWB1I/AAAAAAAAABc/S5QsAq8rt0I/s72-c/hapless+victims.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2413838557667406509</id><published>2007-09-04T20:05:00.001-07:00</published><updated>2007-09-04T20:07:28.170-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Football'/><category scheme='http://www.blogger.com/atom/ns#' term='Liverpool'/><title type='text'>Weekends results...</title><content type='html'>&lt;div align="center"&gt;Liverpool absolutely destroyed Derby County this weekend in the Premiership, 6-0. Derby's defending was diabolical; however, nobody should be beaten 6-0 in the Premiership. To be honest, it could have been 9 or 10.&lt;br /&gt;&lt;br /&gt;Highlights below :)&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/n-UDOpLkAXs"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/n-UDOpLkAXs" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The result has Liverpool top of the league table and holding the greatest goal differential. Go Reds!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2413838557667406509?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2413838557667406509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/09/weekends-results.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2413838557667406509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2413838557667406509'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/09/weekends-results.html' title='Weekends results...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-7247139001750312234</id><published>2007-09-04T19:55:00.000-07:00</published><updated>2007-09-04T19:58:33.915-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GooTube'/><title type='text'>Making fun of David Blaine...</title><content type='html'>If you've ever seen magician David Blaine (his early stuff is pretty neat), you'll probably enjoy this mockumentary homage to his act a friend of mine (thanks Mark!) pointed me to on GooTube.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AYxu_MQSTTY"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/AYxu_MQSTTY" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Pretty funny if you watch it all the way through.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-7247139001750312234?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/7247139001750312234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/09/making-fun-of-david-blaine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7247139001750312234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7247139001750312234'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/09/making-fun-of-david-blaine.html' title='Making fun of David Blaine...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-1915286781211871526</id><published>2007-09-04T09:33:00.000-07:00</published><updated>2008-12-09T01:25:17.113-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Peer pressure'/><title type='text'>Peer pressure...</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_RKtXwakvcTw/Rt2JlhUWByI/AAAAAAAAABE/lpw46PPDaWo/s1600-h/lego.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_RKtXwakvcTw/Rt2JlhUWByI/AAAAAAAAABE/lpw46PPDaWo/s400/lego.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5106388830199875362" /&gt;&lt;/a&gt;&lt;br /&gt;...apparently it is now haute couture to visit &lt;a href="http://www.reasonablyclever.com/mm2/index.htm" target="blank_"&gt;this site&lt;/a&gt; and create a lego abomination (at least that's what I did.)  Enjoy making your own :)  (Personally, I'm all about the spatula.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-1915286781211871526?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/1915286781211871526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/09/peer-pressure.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1915286781211871526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/1915286781211871526'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/09/peer-pressure.html' title='Peer pressure...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RKtXwakvcTw/Rt2JlhUWByI/AAAAAAAAABE/lpw46PPDaWo/s72-c/lego.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8151555126923807072</id><published>2007-08-28T07:01:00.001-07:00</published><updated>2007-09-04T19:59:14.970-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GooTube'/><title type='text'>Subtlety in Hollywood?</title><content type='html'>I wasn't aware that All Bran could help you "drop a ton of bricks".  I can't help but think there's something subliminal about that dump truck at the end... ;)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RwX8MzOKOzI"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RwX8MzOKOzI" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8151555126923807072?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8151555126923807072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/subtlety-in-hollywood.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8151555126923807072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8151555126923807072'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/subtlety-in-hollywood.html' title='Subtlety in Hollywood?'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2000821559898347291</id><published>2007-08-27T19:24:00.000-07:00</published><updated>2008-12-09T01:25:17.257-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Food'/><title type='text'>Risotto al Nero di Seppia</title><content type='html'>Earlier I mentioned my favorite Sardinian desert and reminiscing about that gastronomic delight had me thinking about all the other amazing things you can get there that you can't seem to find here (outside of poor imitations in only the biggest cities.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5103575394692761362" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_RKtXwakvcTw/RtOKyBUWBxI/AAAAAAAAAA8/UeDOrwPS1oA/s400/risotto.gif" border="0" /&gt;One of my all time favs has to be Risotto with Cuttlefish ink. Sounds strange, to be honest it smells strange, stains your teeth, and yet has the most amazing soft and delicate flavor. A &lt;a href="http://www.vene.to.it/cucina/risotto_seppia.asp" target="blank_"&gt;link to the recipe&lt;/a&gt; will explain the work involved.&lt;br /&gt;&lt;br /&gt;Here's a short video of what happens to you after you eat it, LOL:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5uW_zdcN2wc"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/5uW_zdcN2wc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Lucky bastard...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2000821559898347291?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2000821559898347291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/risotto-al-nero-di-seppia.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2000821559898347291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2000821559898347291'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/risotto-al-nero-di-seppia.html' title='Risotto al Nero di Seppia'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RKtXwakvcTw/RtOKyBUWBxI/AAAAAAAAAA8/UeDOrwPS1oA/s72-c/risotto.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2191822278783126103</id><published>2007-08-27T15:03:00.000-07:00</published><updated>2008-12-09T01:25:17.492-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Comics'/><title type='text'>Calvin &amp; Hobbes</title><content type='html'>A few years back I found and purchased (as a birthday gift for a friend) a beautifully bound 3 volume set of ALL the Calvin &amp; Hobbes comics ever released by Bill Watterson and it was on sale at Costco for ~$80 iirc; however, I was too stupid to get myself a copy at the time and needless to say they vanished from Costco like a fart in the wind. I was disconsolate, and luckily the same friend I gifted the set to suggested an alternative form of appeasement until I should again find Costco graced by the presence of Watterson's magnum opus. The &lt;a href="http://www.transmogrifier.org/ch/strips/index" target="blank_"&gt;TRANSMOGRIFIER!&lt;/a&gt; :) God bless the guy who put this up.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5103508483397256962" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_RKtXwakvcTw/RtNN7RUWBwI/AAAAAAAAAA0/RM7JTW4bxXQ/s200/calvin+and+hobbes.jpg" border="0" /&gt;Basically, you can search the topical metadata associated with particular Calvin &amp;amp; Hobbes strips, for example, I love the snowman scenes Calvin would decorate the yard with every year as well as the Spaceman Spiff strips. All I had to do was search on "spiff" or "snowmen" and bliss was at hand.&lt;br /&gt;&lt;br /&gt;I hope this page brings you as much joy as it has me. Luckily I received a set of the 3 volumes this past Christmas and I've been enjoying them ever since.&lt;br /&gt;&lt;br /&gt;You can get the set at &lt;a href="http://www.amazon.com/Complete-Calvin-Hobbes/dp/0740748475" target="blank_"&gt;a reasonable price from Amazon&lt;/a&gt; (but still not as good as finding it at Costco.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2191822278783126103?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2191822278783126103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/calvin-hobbes.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2191822278783126103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2191822278783126103'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/calvin-hobbes.html' title='Calvin &amp; Hobbes'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_RKtXwakvcTw/RtNN7RUWBwI/AAAAAAAAAA0/RM7JTW4bxXQ/s72-c/calvin+and+hobbes.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-6806401836389736669</id><published>2007-08-27T14:14:00.001-07:00</published><updated>2008-12-09T01:25:17.630-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Food'/><title type='text'>A fond food memory from Sardegna...</title><content type='html'>&lt;div align="center"&gt;...I was lucky enough as a child/teenager to spend several years living on the island of Sardegna (Sardinia) and one of my favorite things to eat there was a dessert called 'seadas' (in some villages 'sebadas'.) I tried to find a recipe for them a few years ago and failed miserably; however, it is a relatively simple dish but the nuances are important. Today there appear to be several recipes (all very similar) for them so I'd like to provide one below which matches my best recollection of the dish. Essentially it is a little calzone of slightly sweetened dough filled with cheese, fried, then drizzled with bitter honey and lemon. Simple and yet exquisite, truly.&lt;br /&gt;&lt;br /&gt;(Here's where I lived by the way: &lt;a href="http://maps.google.com/?ie=UTF8&amp;ll=41.18274,9.368849&amp;amp;spn=0.004659,0.007854&amp;t=h&amp;amp;z=17&amp;om=1" target="_blank"&gt;6 Monte Altura, Palau, Sardegna&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5103495280667789026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_RKtXwakvcTw/RtNB6xUWBuI/AAAAAAAAAAk/iz2c-wmanIE/s400/seadas.gif" border="0" /&gt;&lt;br /&gt;The recipe below serves 5, and you'll need:&lt;br /&gt;&lt;br /&gt;500 gr of white flour&lt;br /&gt;400 gr fresh cheese (some villages used a mild pecorina, some use a ricotta, and others some alternative fromaggio dolce)&lt;br /&gt;50 gr lard&lt;br /&gt;Some wheat flour&lt;br /&gt;A half a lemon&lt;br /&gt;Bitter honey (the best is usually from the blossoms of the strawberry tree)&lt;br /&gt;Frying oil&lt;br /&gt;Salt&lt;br /&gt;&lt;br /&gt;Place the cheese in a saucepan, add 250 gr water, a tablespoon of wheat flour and grated rind of half a lemon; place the container on heat and mixing continuously leave it there until it is uniform and dense.&lt;br /&gt;&lt;br /&gt;Remove from heat, extract a small amount of cheese , dampen your hands and form a little squashed circle of about half cm high, then dry it on a dishcloth.&lt;br /&gt;Carry on like this until the cheese is finished.&lt;br /&gt;&lt;br /&gt;While it all dries, pour the flour on a rolling board and work it with the lard, salting and joining as much lukewarm water as is necessary to have a dough of the right consistency (this will require experimentation - mmmmm...)&lt;br /&gt;&lt;br /&gt;Spread it thinly with the rolling pin obtaining a wide, thin pastry strip; place the squashed cheese onto the strips and use the remaining strips to cover them; squash the ends together so that no air gets in and then use a toothed form of about 11cm to obtain bun shapes.&lt;br /&gt;&lt;br /&gt;Fry in boiling oil, drain and bathe with bitter honey and drizzle with more lemon.&lt;br /&gt;&lt;br /&gt;Apparently you can now also get frozen seadas ready to fry at the market, as I found in this GooTube video:&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FIbDn2CMt38"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/FIbDn2CMt38" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-6806401836389736669?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/6806401836389736669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/fond-food-memory-from-sardegna.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6806401836389736669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/6806401836389736669'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/fond-food-memory-from-sardegna.html' title='A fond food memory from Sardegna...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RKtXwakvcTw/RtNB6xUWBuI/AAAAAAAAAAk/iz2c-wmanIE/s72-c/seadas.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5680924435613763030</id><published>2007-08-27T13:51:00.001-07:00</published><updated>2007-08-27T14:14:09.059-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Japan'/><title type='text'>Aaaah, Nippon, land of the rising sun and Human Tetris!</title><content type='html'>Look what Cleanshoes found!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0bK63uSTTNs"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0bK63uSTTNs" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I am astonished that, at times, Japan looks at the US and sees nothing but a country of uncultured barbarity.  Perhaps they figured we'd never see their gameshows.  These probably wouldn't be of much help to them in our trade agreements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5680924435613763030?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5680924435613763030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/aaaah-nippon-land-of-rising-sun-and.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5680924435613763030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5680924435613763030'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/aaaah-nippon-land-of-rising-sun-and.html' title='Aaaah, Nippon, land of the rising sun and Human Tetris!'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-5406237969718302593</id><published>2007-08-26T18:18:00.000-07:00</published><updated>2007-09-04T20:07:44.297-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Football'/><category scheme='http://www.blogger.com/atom/ns#' term='Liverpool'/><title type='text'>Weekends results...</title><content type='html'>Liverpool beat Sunderland soundly 2-0, and Manchester United, yet again, received favorable treatment at Old Twatford. Two penalites, one stonewall on Vidic, and the other a penalty but very difficult for the referee to call and I'd rather they didn't call them unless they really saw them. Manchester United 1-0 over Tottenham Hotspur. Hopefully Martin Jol's board will realize how well they played and avoid doing something so disastrously stupid as handing him his P45.&lt;br /&gt;&lt;br /&gt;I must say that the quality of the refereeing this early in the season has certainly been at least 'questionable.' Some of the calls, like Styles' from last week, have been downright ridiculous. Too bad FIFA has the FA by the b******* about using video technology. We'll see.&lt;br /&gt;&lt;br /&gt;Liverpool highlights:&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NpsNQqNu8Og"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/NpsNQqNu8Og" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-5406237969718302593?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/5406237969718302593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/weekends-results.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5406237969718302593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/5406237969718302593'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/weekends-results.html' title='Weekends results...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-2900614171462556283</id><published>2007-08-24T21:15:00.000-07:00</published><updated>2007-08-26T18:16:36.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><title type='text'>Simultaneously talented and untalented...?</title><content type='html'>&lt;div align="left"&gt;Daft Punk - Not sure what to make of them. They seem to make their way trading on the samples of others... But they sure do make funky cool videos, covers, and music.&lt;br /&gt;&lt;br /&gt;As simplistic and stupidly repetitive as it is, this one I keep finding myself playing every once in a while...&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/75iFFAqXcjI"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/75iFFAqXcjI" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Something hypnotic about the music, something kitsch (sp?) about the electronica, something vaguely suggestive about the guitarist's outfit (nice helmet by the way.) There are many of their videos on GooTube if you're interested in them. They're behind several songs that you probably found yourself drawn to but never knew who did them.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-2900614171462556283?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/2900614171462556283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/simultaneously-talented-and-untalented.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2900614171462556283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/2900614171462556283'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/simultaneously-talented-and-untalented.html' title='Simultaneously talented and untalented...?'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-8008040431345722077</id><published>2007-08-24T20:51:00.001-07:00</published><updated>2007-08-24T21:14:04.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Coding Standards</title><content type='html'>We've recently been lucky enough at our company to find several promising software engineers, some junior, some middling, and some fairly experienced, who are just now ramping up in order to contribute to the next release of our product suite.  This good fortune is tempered by the fact that we find ourselves needing to literally dictate to these motivated, intelligent, and creative people how they should implement their ideas.&lt;br /&gt;&lt;br /&gt;We do this in order to establish a reasonable commonality of expectation amongst our developers.  "We should comment our code heavily, we should name variables clearly, we should...",  yadda^3.  These decisions are, of course, made for the benefit of the team as a whole as opposed to an individual developer but people tend to be reluctant to change especially if what they've done previously worked for them.  Sometimes they can be so reluctant as to resent such 'temerity.'  I don't think we've got to worry about that too much; however, as we've previously only informally laid out these standards it may be some of our tenured developers who find these strictures presumptive.  In any case, some of the coding standards items are required compliances and some are simple suggestions, and none appear to be too outrageious with the possible exception of expecting our engineers to give variables easy to read (albeit more time consuming to type) names.  I'll need to finalize this document next week and then the complaining (even some valid complaining probably) can begin.&lt;br /&gt;&lt;br /&gt;Hopefully, the team will seem them in a positive fashion and as a synergystic methodology as opposed to a barrier or hurdle they must overcome.  I'm also trying to keep this document from being a list of my developmental 'pet peeves' (with one notable exception, &lt;strong&gt;do NOT put C++ implementation code in a header file unless it is truly necessary&lt;/strong&gt; -my debugger and I thank you.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-8008040431345722077?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/8008040431345722077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/coding-standards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8008040431345722077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/8008040431345722077'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/coding-standards.html' title='Coding Standards'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3327384015096906984.post-7028596069272956101</id><published>2007-08-24T14:50:00.000-07:00</published><updated>2007-08-27T19:44:57.759-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Contests'/><title type='text'>Today I was the biggest loser...</title><content type='html'>...but that was a good thing.&lt;br /&gt;&lt;br /&gt;Periodically at our offices one of us decides that we've become a tad, shall we say, 'porcine' and decides that it's time for a 'biggest loser' contest. Everyone is then invited to participate.  Those who do not voluntarily participate are alternatively cajoled, coerced, intimidated, or triple dog dared' (which is an obvious breach of etiquette to go straight to a triple dog dare.) Participants donate $10 and whoever loses the most weight by percentage after a 12 week period is the "Biggest Loser" and claims the accumulated donations.&lt;br /&gt;&lt;br /&gt;Happily for me, the past two contests have coincided with a personal desire to look less like a football (proper football) and more like an athlete. Judging by the results of the past two contests I've only got another 4 or 5 contests to go and I'll be svelte...&lt;br /&gt;&lt;br /&gt;Just as it's always better to go to the gym with a friend, losing weight is the same way. Everyone wants to know that others are just as miserable (if not more so) than themselves, so I have to say I couldn't have done it without my fellow competitors. Their unhappiness and commiseration was the key to my success along with the candy bucket in our office which I managed to... mostly... steer clear of (I can hear those damn Gummis calling my name down the hall 'Kommen Sie her und essen Sie mich!')&lt;br /&gt;&lt;br /&gt;Note to self: Have pizza for dinner tonight... Gotta bulk up for the next iteration of The Biggest Loser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3327384015096906984-7028596069272956101?l=18and5.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://18and5.blogspot.com/feeds/7028596069272956101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://18and5.blogspot.com/2007/08/today-i-was-biggest-loser.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7028596069272956101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3327384015096906984/posts/default/7028596069272956101'/><link rel='alternate' type='text/html' href='http://18and5.blogspot.com/2007/08/today-i-was-biggest-loser.html' title='Today I was the biggest loser...'/><author><name>Hans</name><uri>http://www.blogger.com/profile/06122998924087203555</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
