<?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-6233128224633539222</id><updated>2012-02-16T10:42:54.786-05:00</updated><category term='search redirecct'/><category term='Windows XP'/><category term='control'/><category term='active directory'/><category term='Performance'/><category term='asklots.com'/><category term='SQL'/><category term='tsql'/><category term='River Cottage'/><category term='malware'/><category term='2003'/><category term='Security'/><category term='Credentials'/><category term='terminal services'/><category term='c#'/><category term='Identity'/><category term='ldap'/><category term='General'/><category term='WMI'/><category term='hostname'/><category term='rdp'/><category term='tokens'/><category term='shortcuts'/><category term='RSOP'/><category term='dhcp server'/><category term='.net'/><category term='logon'/><category term='Events'/><category term='combofix'/><category term='Spam'/><category term='Windows 7'/><category term='rundll32'/><category term='wcf'/><category term='nested groups'/><category term='Shell:'/><category term='Resume'/><category term='authentication'/><category term='netsh'/><category term='windows 2008'/><category term='groups'/><category term='novell'/><category term='migration'/><category term='cached credentials'/><category term='Kerberos'/><category term='CV'/><category term='Technologist'/><category term='ad'/><category term='Brian Hehir'/><category term='c# kernel32.dll DeviceIoControl example'/><category term='cpl'/><category term='wireless'/><category term='clr'/><category term='GPO'/><category term='virus'/><title type='text'>Brian Hehir's Random Doodlings &amp; Techno Babble</title><subtitle type='html'>Welcome to the worryingly worthwhile world of Numpt</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-7094536769984263528</id><published>2011-12-08T09:45:00.005-05:00</published><updated>2011-12-11T17:30:43.597-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c# kernel32.dll DeviceIoControl example'/><title type='text'>kernel32.dll DeviceIoControl example in C#</title><content type='html'>&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); font-size: 13px;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Had to write some code to retrieve the partition alignment of some VM disks hosted on a NAS from within the client OS. Simple method using WMI is below, but that was a bit dull as WMI is too easy so I thought I'd create a native method using API calls to kernel32.dll and use DeviceIOControl... what a pain but below is a native method that shows how to get the native code working under C#...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;WMI method - simples...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); font-size: 13px; font-family: arial, sans-serif; color: rgb(34, 34, 34); "&gt;&lt;span style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;        &lt;span style="color:blue;"&gt;void&lt;/span&gt; WMIMethod()         &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;{&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;             &lt;span style="color:blue;"&gt;string&lt;/span&gt; sComputer = &lt;span style="color:#a31515;"&gt;"."&lt;/span&gt;; &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;            ManagementScope scope = &lt;span style="color:blue;"&gt;new&lt;/span&gt; ManagementScope(&lt;span style="color:#a31515;"&gt;"\\\\"&lt;/span&gt; + sComputer + &lt;span style="color:#a31515;"&gt;"\\root\\cimv2"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;             &lt;span style="color:green;"&gt;//"\\\\" + args[0] + "\\root\\cimv2");&lt;/span&gt;            &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;scope.Connect();&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;            ObjectQuery query = &lt;span style="color:blue;"&gt;new&lt;/span&gt; ObjectQuery(&lt;span style="color:#a31515;"&gt;"SELECT * FROM Win32_DiskPartition"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;             ManagementObjectSearcher searcher =  &lt;span style="color:blue;"&gt;new&lt;/span&gt; ManagementObjectSearcher(scope, query);&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;               ManagementObjectCollection queryCollection = searcher.Get();&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;               &lt;span style="color:green;"&gt;// Console.WriteLine("MachineName={0}", args[0]);&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;             &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (ManagementObject m &lt;span style="color:blue;"&gt;in&lt;/span&gt; queryCollection)&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;             {                 &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="color:green;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Display the remote computer information&lt;/span&gt;                 &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="color:#2b91af;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Console&lt;/span&gt;.Write(&lt;span style="color:#a31515;"&gt;"Disk={0}"&lt;/span&gt;, m[&lt;span style="color:#a31515;"&gt;"DiskIndex"&lt;/span&gt;]);                 &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="color:#2b91af;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Console&lt;/span&gt;.Write(&lt;span style="color:#a31515;"&gt;",Partition={0}"&lt;/span&gt;, m[&lt;span style="color:#a31515;"&gt;"Index"&lt;/span&gt;]);                 &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="color:blue;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;foreach&lt;/span&gt; (ManagementBaseObject c &lt;span style="color:blue;"&gt;in&lt;/span&gt; m.GetRelated(&lt;span style="color:#a31515;"&gt;"Win32_LogicalDisk"&lt;/span&gt;))     &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;            {                     &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="color:#2b91af;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Console&lt;/span&gt;.Write(&lt;span style="color:#a31515;"&gt;",Drive={0}"&lt;/span&gt;, c[&lt;span style="color:#a31515;"&gt;"name"&lt;/span&gt;]);                 &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}                 &lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="color:#2b91af;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Console&lt;/span&gt;.Write(&lt;span style="color:#a31515;"&gt;",StartingOffset={0}"&lt;/span&gt;, m[&lt;span style="color:#a31515;"&gt;"StartingOffset"&lt;/span&gt;]);&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;                 &lt;span style="color:#2b91af;"&gt;Int64&lt;/span&gt; i = &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt64(m[&lt;span style="color:#a31515;"&gt;"StartingOffset"&lt;/span&gt;]) + &lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ToInt64(m[&lt;span style="color:#a31515;"&gt;"Size"&lt;/span&gt;]);&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;                 &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.Write(&lt;span style="color:#a31515;"&gt;",NextAlignedOffset={0}"&lt;/span&gt;, i);&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;                 &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;",Size={0}"&lt;/span&gt;, m[&lt;span style="color:#a31515;"&gt;"Size"&lt;/span&gt;]);&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;             }&lt;/pre&gt;&lt;pre style="font-family: Consolas; color: black; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: white; background-position: initial initial; background-repeat: initial initial; "&gt;           }&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); font-size: 13px; "&gt;&lt;span class="Apple-style-span"&gt;Now the tricky one using the native calls... &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Consolas; "&gt;Converted this to C# from a post on XtremeVB, works like a charm...&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: rgb(34, 34, 34); font-size: 13px; "&gt;&lt;span style="color: green; font-size: 9.5pt; "&gt;&lt;div class="MsoNormal" style="color: rgb(34, 34, 34); font-family: arial, sans-serif; "&gt;&lt;span style="color: green; font-family: Consolas; font-size: 9.5pt; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: green; font-family: Consolas; font-size: 9.5pt;"&gt;//using Microsoft.VisualBasic;&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System.Collections;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System.Collections.Generic;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System.Data;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System.Diagnostics;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; Microsoft.Win32.SafeHandles;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System.ComponentModel;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System.Runtime.&lt;wbr&gt;InteropServices;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;using&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; System.Security;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;static&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IOCtl&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;{&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; GENERIC_READ = &lt;span style="color: blue;"&gt;unchecked&lt;/span&gt;((&lt;span style="color: blue;"&gt;int&lt;/span&gt;)0x80000000);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; FILE_SHARE_READ = 1;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; FILE_SHARE_WRITE = 2;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; OPEN_EXISTING = 3;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; IOCTL_DISK_GET_DRIVE_LAYOUT_EX = &lt;span style="color: blue;"&gt;unchecked&lt;/span&gt;((&lt;span style="color: blue;"&gt;int&lt;/span&gt;)0x00070050);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; ERROR_INSUFFICIENT_BUFFER = 122;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;enum&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt; : &lt;span style="color: blue;"&gt;int&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        MBR = 0,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        GPT = 1,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        RAW = 2&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;enum&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Partition&lt;/span&gt; : &lt;span style="color: blue;"&gt;byte&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        ENTRY_UNUSED = 0,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        FAT_12 = 1,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        XENIX_1 = 2,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        XENIX_2 = 3,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        FAT_16 = 4,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        EXTENDED = 5,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        HUGE = 6,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        IFS = 7,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        OS2BOOTMGR = 0xa,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        FAT32 = 0xb,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        FAT32_XINT13 = 0xc,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        XINT13 = 0xe,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        XINT13_EXTENDED = 0xf,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        PREP = 0x41,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        LDM = 0x42,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        UNIX = 0x63&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    [&lt;span style="color: #2b91af;"&gt;SuppressUnmanagedCodeSecurity&lt;/span&gt;&lt;wbr&gt;()]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;NativeMethods&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;DllImport&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"kernel32"&lt;/span&gt;, CharSet = &lt;span style="color: #2b91af;"&gt;CharSet&lt;/span&gt;.Unicode, SetLastError = &lt;span style="color: blue;"&gt;true&lt;/span&gt;)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;extern&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;SafeFileHandle&lt;/span&gt; CreateFile(&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; desiredAccess,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; shareMode,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; securityAttributes,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; creationDisposition,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; flagsAndAttributes,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; hTemplateFile);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;DllImport&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"kernel32"&lt;/span&gt;, SetLastError = &lt;span style="color: blue;"&gt;true&lt;/span&gt;)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: blue;"&gt;return&lt;/span&gt;: &lt;span style="color: #2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;UnmanagedType&lt;/span&gt;.Bool)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;extern&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; DeviceIoControl(&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;SafeFileHandle&lt;/span&gt; hVol,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; controlCode,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; inBuffer,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; inBufferSize,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; outBuffer,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; outBufferSize,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;ref&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; bytesReturned,&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; overlapped);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: green;"&gt;// Needs to be explicit to do the union.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    [&lt;span style="color: #2b91af;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;LayoutKind&lt;/span&gt;.&lt;wbr&gt;Explicit)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_INFORMATION_EX&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(0)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt; PartitionStyle;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(4)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; PartitionCount;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(8)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_INFORMATION_MBR&lt;/span&gt; Mbr;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(8)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_INFORMATION_GPT&lt;/span&gt; Gpt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// Forget partition entry, we can't marshal it directly&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// as we don't know how big it is.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_INFORMATION_MBR&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;uint&lt;/span&gt; Signature;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: green;"&gt;// Sequential ensures the fields are laid out in memory&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: green;"&gt;// in the same order as we write them here. Without it,&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: green;"&gt;// the runtime can arrange them however it likes, and the&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: green;"&gt;// type may no longer be blittable to the C type.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    [&lt;span style="color: #2b91af;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;LayoutKind&lt;/span&gt;.&lt;wbr&gt;Sequential)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_INFORMATION_GPT&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt; DiskId;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;//  C LARGE_INTEGER is 64 bit&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;long&lt;/span&gt; StartingUsableOffset;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;long&lt;/span&gt; UsableLength;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// C ULONG is 32 bit&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; MaxPartitionCount;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    [&lt;span style="color: #2b91af;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;LayoutKind&lt;/span&gt;.&lt;wbr&gt;Sequential)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_MBR&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;byte&lt;/span&gt; PartitionType;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;UnmanagedType&lt;/span&gt;.U1)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;       &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; BootIndicator;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;UnmanagedType&lt;/span&gt;.U1)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; RecognizedPartition;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;UInt32&lt;/span&gt; HiddenSectors;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// helper method - is the hi bit valid - if so IsNTFT has meaning.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; IsValidNTFT()&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;return&lt;/span&gt; (PartitionType &amp;amp; 0xc0) == 0xc0;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// is this NTFT - i.e. an NTFT raid or mirror.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; IsNTFT()&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;return&lt;/span&gt; (PartitionType &amp;amp; 0x80) == 0x80;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// the actual partition type.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Partition&lt;/span&gt; GetPartition()&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;byte&lt;/span&gt; mask = 0x3f;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;return&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;Partition&lt;/span&gt;)(PartitionType &amp;amp; mask);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    [&lt;span style="color: #2b91af;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;LayoutKind&lt;/span&gt;.&lt;wbr&gt;Explicit, CharSet = &lt;span style="color: #2b91af;"&gt;CharSet&lt;/span&gt;.Unicode)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_GPT&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// Strangely, this works as sequential if you build x86,&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;// But for x64 you must use explicit.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(0)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt; PartitionType;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(16)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt; PartitionId;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(32)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: green;"&gt;//DWord64&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;ulong&lt;/span&gt; Attributes;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(40)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;UnmanagedType&lt;/span&gt;.&lt;wbr&gt;ByValTStr, SizeConst = 36)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; Name;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    [&lt;span style="color: #2b91af;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;LayoutKind&lt;/span&gt;.&lt;wbr&gt;Explicit)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_EX&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(0)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt; PartitionStyle;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(8)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;long&lt;/span&gt; StartingOffset;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(16)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;long&lt;/span&gt; PartitionLength;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(24)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; PartitionNumber;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(28)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;MarshalAs&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;UnmanagedType&lt;/span&gt;.U1)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; RewritePartition;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(32)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_MBR&lt;/span&gt; Mbr;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        [&lt;span style="color: #2b91af;"&gt;FieldOffset&lt;/span&gt;(32)]&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_GPT&lt;/span&gt; Gpt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main()&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        SendIoCtlDiskGetDriveLayoutEx(&lt;wbr&gt;0);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadKey();&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; SendIoCtlDiskGetDriveLayoutEx(&lt;span style="color: blue;"&gt;&lt;wbr&gt;int&lt;/span&gt; PhysicalDrive)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_INFORMATION_EX&lt;/span&gt; lie = &lt;span style="color: blue;"&gt;default&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_&lt;wbr&gt;INFORMATION_EX&lt;/span&gt;);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_EX&lt;/span&gt;[] pies = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;SafeFileHandle&lt;/span&gt; hDevice =&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;NativeMethods&lt;/span&gt;.CreateFile(&lt;span style="color: #a31515;"&gt;"\\\\&lt;wbr&gt;.\\PHYSICALDRIVE"&lt;/span&gt; + PhysicalDrive, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt;.Zero, OPEN_EXISTING, 0, &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt;.Zero))&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (hDevice.IsInvalid)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Win32Exception&lt;/span&gt;();&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: green;"&gt;// Must run as administrator, otherwise we get "ACCESS DENIED"&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: green;"&gt;// We don't know how many partitions there are, so we have to use a blob of memory...&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;int&lt;/span&gt; numPartitions = 1;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;bool&lt;/span&gt; done = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;do&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: green;"&gt;// 48 = the number of bytes in DRIVE_LAYOUT_INFORMATION_EX up to&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: green;"&gt;// the first PARTITION_INFORMATION_EX in the array.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: green;"&gt;// And each PARTITION_INFORMATION_EX is 144 bytes.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;int&lt;/span&gt; outBufferSize = 48 + (numPartitions * 144);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; blob = &lt;span style="color: blue;"&gt;default&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt;);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;int&lt;/span&gt; bytesReturned = 0;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;bool&lt;/span&gt; result = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    blob = &lt;span style="color: #2b91af;"&gt;Marshal&lt;/span&gt;.AllocHGlobal(&lt;wbr&gt;outBufferSize);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    result = &lt;span style="color: #2b91af;"&gt;NativeMethods&lt;/span&gt;.DeviceIoControl(&lt;wbr&gt;hDevice, IOCTL_DISK_GET_DRIVE_LAYOUT_&lt;wbr&gt;EX, &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt;.Zero, 0, blob, outBufferSize, &lt;span style="color: blue;"&gt;ref&lt;/span&gt;bytesReturned, &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt;.Zero);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: green;"&gt;// We expect that we might not have enough room in the output buffer.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: blue;"&gt;if&lt;/span&gt; (result == &lt;span style="color: blue;"&gt;false&lt;/span&gt;)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: green;"&gt;// If the buffer wasn't too small, then something else went wrong.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;Marshal&lt;/span&gt;.GetLastWin32Error() != ERROR_INSUFFICIENT_BUFFER)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                            &lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Win32Exception&lt;/span&gt;();&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: green;"&gt;// We need more space on the next loop.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        numPartitions += 1;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: green;"&gt;// We got the size right, so stop looping.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        done = &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: green;"&gt;// Do something with the data here - we'll free the memory before we leave the loop.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: green;"&gt;// First we grab the DRIVE_LAYOUT_INFORMATION_EX, it's at the start of the blob of memory:&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        lie = (&lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_INFORMATION_EX&lt;/span&gt;)&lt;span style="color: #2b91af;"&gt;M&lt;wbr&gt;arshal&lt;/span&gt;.PtrToStructure(blob, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_&lt;wbr&gt;INFORMATION_EX&lt;/span&gt;));&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: green;"&gt;// Then loop and add the PARTITION_INFORMATION_EX structures to an array.&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        pies = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_EX&lt;/span&gt;[lie.&lt;wbr&gt;PartitionCount];&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &amp;lt;= lie.PartitionCount - 1; i++)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                            &lt;span style="color: green;"&gt;// Where is this structure in the blob of memory?&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                            &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; offset = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt;(blob.ToInt64() + 48 + (i * 144));&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                            pies[i] = (&lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_EX&lt;/span&gt;)&lt;span style="color: #2b91af;"&gt;Mars&lt;wbr&gt;hal&lt;/span&gt;.PtrToStructure(offset, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_&lt;wbr&gt;EX&lt;/span&gt;));&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;finally&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Marshal&lt;/span&gt;.FreeHGlobal(blob);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            } &lt;span style="color: blue;"&gt;while&lt;/span&gt; (!(done));&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        DumpInfo(lie, pies);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;bool&lt;/span&gt; IsPart0Aligned(&lt;span style="color: #2b91af;"&gt;PARTITION_&lt;wbr&gt;INFORMATION_EX&lt;/span&gt;[] pies)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;try&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;if&lt;/span&gt; (pies[0].StartingOffset % 4096 == 0)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;true&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;catch&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;false&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; DumpInfo(&lt;span style="color: #2b91af;"&gt;DRIVE_LAYOUT_&lt;wbr&gt;INFORMATION_EX&lt;/span&gt; lie, &lt;span style="color: #2b91af;"&gt;PARTITION_INFORMATION_EX&lt;/span&gt;[] pies)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;if&lt;/span&gt; (IsPart0Aligned(pies) == &lt;span style="color: blue;"&gt;true&lt;/span&gt;) {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.Write( &lt;span style="color: #a31515;"&gt;"True"&lt;/span&gt;);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.Write(&lt;span style="color: #a31515;"&gt;"false"&lt;/span&gt;);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;       &lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"&lt;wbr&gt;Partition Style: {0}"&lt;/span&gt;, lie.PartitionStyle);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Partition Count: {0}"&lt;/span&gt;, lie.PartitionCount);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;switch&lt;/span&gt; (lie.PartitionStyle)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt;.MBR:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Mbr Signature: {0}"&lt;/span&gt;, lie.Mbr.Signature);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt;.GPT:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt DiskId: {0}"&lt;/span&gt;, lie.Gpt.DiskId);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt StartingUsableOffset: {0}"&lt;/span&gt;, lie.Gpt.StartingUsableOffset);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt UsableLength: {0}"&lt;/span&gt;, lie.Gpt.UsableLength);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt MaxPartitionCount: {0}"&lt;/span&gt;, lie.Gpt.MaxPartitionCount);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;default&lt;/span&gt;:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"RAW!"&lt;/span&gt;);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;       &lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &amp;lt;= lie.PartitionCount - 1; i++)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine();&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Partition {0} info..."&lt;/span&gt;, i + 1);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"-----------&lt;wbr&gt;--------"&lt;/span&gt;);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine();&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;var&lt;/span&gt; _with1 = pies[i];&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Partition style: {0}"&lt;/span&gt;, _with1.PartitionStyle);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Starting offset: {0}"&lt;/span&gt;, _with1.StartingOffset);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Partition length: {0}"&lt;/span&gt;, _with1.PartitionLength);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Partition number: {0}"&lt;/span&gt;, _with1.PartitionNumber);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Rewrite partition: {0}"&lt;/span&gt;, _with1.RewritePartition);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            &lt;span style="color: blue;"&gt;switch&lt;/span&gt; (_with1.PartitionStyle)&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            {&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt;.MBR:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: blue;"&gt;var&lt;/span&gt; _with2 = _with1.Mbr;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Mbr PartitionType - raw value: {0}"&lt;/span&gt;, _with2.PartitionType);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                   &lt;span style="color: green;"&gt;// Console.WriteLine("Mbr PartitionType - validNTFT: {0}", _with2.IsValidNTFT);&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                   &lt;span style="color: green;"&gt;// if (_with2.IsValidNTFT)&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                   &lt;span style="color: green;"&gt;//     Console.WriteLine("Mbr PartitionType - ntft: {0}", _with2.IsNTFT);&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                   &lt;span style="color: green;"&gt;// Console.WriteLine("Mbr PartitionType - decoded: {0}", _with2.GetPartition);&lt;/span&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Mbr BootIndicator : {0}"&lt;/span&gt;, _with2.BootIndicator);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"&lt;wbr&gt;Mbr RecognizedPartition : {0}"&lt;/span&gt;, _with2.RecognizedPartition);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Mbr HiddenSectors : {0}"&lt;/span&gt;, _with2.HiddenSectors);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt;.GPT:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: blue;"&gt;var&lt;/span&gt; _with3 = _with1.Gpt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt PartitionType: {0}"&lt;/span&gt;, _with3.PartitionType);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt PartitionId: {0}"&lt;/span&gt;, _with3.PartitionId);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt Attributes: {0}"&lt;/span&gt;, _with3.Attributes);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Gpt Name: {0}"&lt;/span&gt;, _with3.Name);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PARTITION_STYLE&lt;/span&gt;.RAW:&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"RAW!"&lt;/span&gt;);&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;                    &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;            }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;        }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;    }&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;Simples! lol!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-7094536769984263528?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/7094536769984263528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2011/12/kernel32dll-deviceiocontrol-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/7094536769984263528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/7094536769984263528'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2011/12/kernel32dll-deviceiocontrol-in-c.html' title='kernel32.dll DeviceIoControl example in C#'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-3916914497957307094</id><published>2011-10-10T11:18:00.005-04:00</published><updated>2011-12-10T17:46:03.801-05:00</updated><title type='text'>Delete old profiles</title><content type='html'>Had an issue with a client where SCCM was mounting each user profile (NTUSER.DAT) everyday and the profile age was always the same for all users on the machine even if some had not logged in for months. so knocked this out that looks at the DateModified on the profile directory which only gets updated when the user logs out.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;using System;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;using Microsoft.Win32;&lt;br /&gt;&lt;br /&gt;using System.IO;&lt;br /&gt;&lt;br /&gt;using System.Security.Principal;&lt;br /&gt;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;&lt;br /&gt;using System.Diagnostics;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace DelProfs&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;class Program&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static string m_skeyName = "";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static string skeyName&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;get { return m_skeyName; }&lt;br /&gt;&lt;br /&gt;set { m_skeyName = value; } &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static string m_sHKLMkeyName = "";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static string sHKLMkeyName&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;get { return m_sHKLMkeyName; }&lt;br /&gt;&lt;br /&gt;set { m_sHKLMkeyName = value; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static string m_sFile2Check = "";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static string sFile2Check&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;get { return m_sFile2Check; }&lt;br /&gt;&lt;br /&gt;set { m_sFile2Check = value; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[DllImport("userenv.dll", SetLastError = true)]&lt;br /&gt;&lt;br /&gt;static extern bool DeleteProfile(string lpSidString, string lpProfilePath, string lpcomputername);&lt;br /&gt;&lt;br /&gt;[DllImport("kernel32", SetLastError = true, CallingConvention = CallingConvention.Winapi)]&lt;br /&gt;&lt;br /&gt;public extern static IntPtr LoadLibrary(string libraryName);&lt;br /&gt;&lt;br /&gt;[DllImport("kernel32", SetLastError = true, CallingConvention = CallingConvention.Winapi)]&lt;br /&gt;&lt;br /&gt;public extern static IntPtr GetProcAddress(IntPtr hwnd, string procedureName);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//if (Is32BitProcessOn64BitProcessor())&lt;br /&gt;&lt;br /&gt;//{&lt;br /&gt;&lt;br /&gt;// skeyName = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList";&lt;br /&gt;&lt;br /&gt;// sHKLMkeyName = "SOFTWARE\\Wow6432Node\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList";&lt;br /&gt;&lt;br /&gt;//}&lt;br /&gt;&lt;br /&gt;//else&lt;br /&gt;&lt;br /&gt;//{&lt;br /&gt;&lt;br /&gt;skeyName = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList";&lt;br /&gt;&lt;br /&gt;sHKLMkeyName = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList";&lt;br /&gt;&lt;br /&gt;//}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sFile2Check = "NTUSER.DAT";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//const string lpcomputername = null;&lt;br /&gt;&lt;br /&gt;if (args.Length == 0)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;System.Console.WriteLine("Please Enter the Age of Profiles to Delete in Days.");&lt;br /&gt;&lt;br /&gt;System.Console.WriteLine("Usage: DelProfs &lt;days&gt;");&lt;br /&gt;&lt;br /&gt;System.Console.WriteLine();&lt;br /&gt;&lt;br /&gt;return;&lt;br /&gt;&lt;br /&gt;//return 1;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;string sdefUserDomain = "";&lt;br /&gt;&lt;br /&gt;string sdefUserName = "";&lt;br /&gt;&lt;br /&gt;int num;&lt;br /&gt;&lt;br /&gt;bool test = int.TryParse(args[0], out num);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (test == false)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;System.Console.WriteLine("Please Enter the Age of Profiles to Delete in Days.");&lt;br /&gt;&lt;br /&gt;System.Console.WriteLine("Usage: DelProfs &lt;days&gt;");&lt;br /&gt;&lt;br /&gt;System.Console.WriteLine();&lt;br /&gt;&lt;br /&gt;return;&lt;br /&gt;&lt;br /&gt;//return 1;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (args.Length == 3)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//get the default domain and username passed from smartbutton&lt;br /&gt;&lt;br /&gt;sdefUserDomain = args[1].ToUpper();&lt;br /&gt;&lt;br /&gt;sdefUserName = args[2].ToUpper();&lt;br /&gt;&lt;br /&gt;//System.Console.WriteLine(sdefUser);&lt;br /&gt;&lt;br /&gt;//return;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string sComputerName = "";&lt;br /&gt;&lt;br /&gt;sComputerName = (string)Registry.GetValue("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\ComputerName\\ActiveComputerName","Computername","");&lt;br /&gt;&lt;br /&gt;//return;&lt;br /&gt;&lt;br /&gt;//int iMaxAge = 10;&lt;br /&gt;&lt;br /&gt;int iMaxAge = num;&lt;br /&gt;&lt;br /&gt;string sProfilePath = (string)Registry.GetValue(skeyName, "ProfilesDirectory", "");&lt;br /&gt;&lt;br /&gt;sProfilePath = Environment.ExpandEnvironmentVariables(sProfilePath);&lt;br /&gt;&lt;br /&gt;if (sProfilePath != "")&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;foreach (string sdir in Directory.GetDirectories(sProfilePath))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//System.Console.WriteLine(sdir);&lt;br /&gt;&lt;br /&gt;//string sTemp = Path.Combine(sdir, "HELPASSISTANT");&lt;br /&gt;&lt;br /&gt;if ((sdir.ToUpper().Contains(sComputerName)) &amp;amp;&amp;amp; (sComputerName != "")) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;DeleteUserProfileKey(Path.Combine(sdir, "HELPASSISTANT")); &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DateTime dFolderAge = getFolderDateModified(sdir);&lt;br /&gt;&lt;br /&gt;int iAge = HowOld(dFolderAge);&lt;br /&gt;&lt;br /&gt;if (iAge &amp;gt; iMaxAge)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;string scheck = Path.Combine(sdir, sFile2Check);&lt;br /&gt;&lt;br /&gt;if ((File.Exists(scheck)) &lt;br /&gt;&lt;br /&gt;((File.GetAttributes(scheck) &amp;amp; FileAttributes.Hidden) == FileAttributes.Hidden))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//check owner&lt;br /&gt;&lt;br /&gt;//string sowner = "";&lt;br /&gt;&lt;br /&gt;string sowner = getFileOwner(Path.Combine(sdir, sFile2Check));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (sowner.IndexOf("\\") &amp;gt; 0)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string[] split = null;&lt;br /&gt;&lt;br /&gt;char[] splitchar = { '\\' };&lt;br /&gt;&lt;br /&gt;split = sowner.Split(splitchar);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string sDomainNaime = split[0];&lt;br /&gt;&lt;br /&gt;string sUserName = split[1];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if ((sDomainNaime.ToUpper() == "BUILTIN") &lt;br /&gt;&lt;br /&gt;(sDomainNaime.ToUpper() == "NT AUTHORITY")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(sDomainNaime.ToUpper() == "ERROR") &lt;br /&gt;&lt;br /&gt;(sDomainNaime.ToUpper() == "WINDOWSLIVEID")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(sDomainNaime.ToUpper() == "IIS APPPOOL")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;((sDomainNaime.ToUpper() == sdefUserDomain.ToUpper()) &amp;amp;&amp;amp; (sUserName.ToUpper() == sdefUserName.ToUpper())&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(sUserName.ToUpper().Contains("CLEARCASE")))&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;//Excluded account profiles&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//ForceDeleteDirectory(sdir);&lt;br /&gt;&lt;br /&gt;//DeleteUserProfileKey(sdir);&lt;br /&gt;&lt;br /&gt;DeleteUserProfileKey(sdir);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;else &lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;// not a domain account&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//no ntuser.dat found so delete it anyway&lt;br /&gt;&lt;br /&gt;//ForceDeleteDirectory(sdir);&lt;br /&gt;&lt;br /&gt;//DeleteUserProfileKey(sdir);&lt;br /&gt;&lt;br /&gt;DeleteUserProfileKey(sdir);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//Console.WriteLine(excpt.Message);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;else { }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static int HowOld(DateTime d1)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;TimeSpan ts = DateTime.Now - d1;&lt;br /&gt;&lt;br /&gt;return Math.Abs(ts.Days);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static void DeleteUserProfileKey(string sProfilePath)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//string keyName = "LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList";&lt;br /&gt;&lt;br /&gt;Boolean bfound = false;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;using (RegistryKey profileList = Registry.LocalMachine.OpenSubKey(sHKLMkeyName))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//Get a list of SIDs corresponding to each profile on the computer&lt;br /&gt;&lt;br /&gt;string[] sidList = profileList.GetSubKeyNames();&lt;br /&gt;&lt;br /&gt;foreach (string ssid in sidList)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;string sRegPath = Path.Combine(skeyName, ssid);&lt;br /&gt;&lt;br /&gt;string sProfileTestPath = (string)Registry.GetValue(sRegPath, "ProfileImagePath", "");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (sProfileTestPath.ToUpper() == sProfilePath.ToUpper())&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;DeleteProfile(ssid, sProfilePath, null);&lt;br /&gt;&lt;br /&gt;bfound = true;&lt;br /&gt;&lt;br /&gt;ForceDeleteDirectory(sProfilePath);&lt;br /&gt;&lt;br /&gt;DeleteProfile(ssid, sProfilePath, null);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//Console.WriteLine(e.Message);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (bfound == false) &lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ForceDeleteDirectory(sProfilePath);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;// Console.WriteLine(e.Message);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static void deleteRegKeySub(string skey)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;Registry.LocalMachine.DeleteSubKeyTree(skey);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static string getFileOwner(string sFile)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;if (File.Exists(sFile))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;var fs = File.GetAccessControl(sFile);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var sid = fs.GetOwner(typeof(SecurityIdentifier));&lt;br /&gt;&lt;br /&gt;//Console.WriteLine(sid); // SID&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var ntAccount = sid.Translate(typeof(NTAccount));&lt;br /&gt;&lt;br /&gt;//Console.WriteLine(ntAccount); // DOMAIN\username&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;return ntAccount.ToString().ToUpper();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return "";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return ""; &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static DateTime getFolderDateModified(string sFolderPath)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;string spath = @sFolderPath;&lt;br /&gt;&lt;br /&gt;if (!Directory.Exists(spath))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return DateTime.Now;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return Directory.GetLastWriteTime(spath);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return DateTime.Now;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//private static void DeleteFileSystemInfo(FileSystemInfo fsi)&lt;br /&gt;&lt;br /&gt;//{&lt;br /&gt;&lt;br /&gt;// fsi.Attributes = FileAttributes.Normal;&lt;br /&gt;&lt;br /&gt;// var di = fsi as DirectoryInfo;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// if (di != null)&lt;br /&gt;&lt;br /&gt;// {&lt;br /&gt;&lt;br /&gt;// foreach (var dirInfo in di.GetFileSystemInfos())&lt;br /&gt;&lt;br /&gt;// DeleteFileSystemInfo(dirInfo);&lt;br /&gt;&lt;br /&gt;// }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// fsi.Delete();&lt;br /&gt;&lt;br /&gt;//}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static void ForceDeleteDirectory(string path)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;DirectoryInfo root;&lt;br /&gt;&lt;br /&gt;Stack&lt;directoryinfo&gt; fols;&lt;br /&gt;&lt;br /&gt;DirectoryInfo fol;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;fols = new Stack&lt;directoryinfo&gt;();&lt;br /&gt;&lt;br /&gt;root = new DirectoryInfo(path);&lt;br /&gt;&lt;br /&gt;fols.Push(root);&lt;br /&gt;&lt;br /&gt;while (fols.Count &amp;gt; 0)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;fol = fols.Pop();&lt;br /&gt;&lt;br /&gt;fol.Attributes = fol.Attributes &amp;amp; ~(FileAttributes.Archive &lt;br /&gt;FileAttributes.ReadOnly &lt;br /&gt;FileAttributes.Hidden);&lt;br /&gt;&lt;br /&gt;foreach (DirectoryInfo d in fol.GetDirectories())&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;fols.Push(d);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;foreach (FileInfo f in fol.GetFiles())&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;f.Attributes = f.Attributes &amp;amp; ~(FileAttributes.Archive &lt;br /&gt;FileAttributes.ReadOnly &lt;br /&gt;FileAttributes.Hidden);&lt;br /&gt;&lt;br /&gt;f.Delete();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;root.Delete(true);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch { }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private delegate bool IsWow64ProcessDelegate([In] IntPtr handle, [Out] out bool isWow64Process); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public static bool IsOS64Bit() &lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;if (IntPtr.Size == 8 &lt;br /&gt;&lt;br /&gt;(IntPtr.Size == 4 &amp;amp;&amp;amp; Is32BitProcessOn64BitProcessor()))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return true;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return false;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return false;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static IsWow64ProcessDelegate GetIsWow64ProcessDelegate() &lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IntPtr handle = LoadLibrary("kernel32");&lt;br /&gt;&lt;br /&gt;if (handle != IntPtr.Zero)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;IntPtr fnPtr = GetProcAddress(handle, "IsWow64Process");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (fnPtr != IntPtr.Zero)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return (IsWow64ProcessDelegate)Marshal.GetDelegateForFunctionPointer((IntPtr)fnPtr, typeof(IsWow64ProcessDelegate));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{ }&lt;br /&gt;&lt;br /&gt;return null; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private static bool Is32BitProcessOn64BitProcessor()&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;bool isWow64 = false;&lt;br /&gt;&lt;br /&gt;bool retVal = false;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;IsWow64ProcessDelegate fnDelegate = GetIsWow64ProcessDelegate();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (fnDelegate == null)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;return false;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;retVal = fnDelegate.Invoke(Process.GetCurrentProcess().Handle, out isWow64);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception)&lt;br /&gt;&lt;br /&gt;{ }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (retVal == false) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;return false; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;return isWow64; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/directoryinfo&gt;&lt;/directoryinfo&gt;&lt;/days&gt;&lt;/days&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-3916914497957307094?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/3916914497957307094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2011/10/delete-old-profiles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3916914497957307094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3916914497957307094'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2011/10/delete-old-profiles.html' title='Delete old profiles'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-2951808249719219506</id><published>2010-12-06T13:56:00.004-05:00</published><updated>2010-12-06T14:00:53.414-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hostname'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='wcf'/><title type='text'>Get HostName from client in WCF</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;What a pain! but this works. Add references to:&lt;br /&gt;&lt;br /&gt;using System.ServiceModel.Channels;&lt;br /&gt;using System.Net;&lt;br /&gt;&lt;br /&gt;.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then this will get the client's IP address from the incoming message header on your IIS hosted WCF Web Service and resolve to the host:&lt;br /&gt;&lt;br /&gt;string ComputerName = "NOTFOUND";&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;var remp = OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;&lt;br /&gt;string[] computer_name = Dns.GetHostEntry(remp.Address).HostName.Split(new Char[] { '.' });&lt;br /&gt;ComputerName = computer_name[0].ToString();&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;ComputerName = "NOTFOUND";&lt;br /&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-2951808249719219506?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/2951808249719219506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2010/12/get-hostname-from-client-in-wcf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/2951808249719219506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/2951808249719219506'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2010/12/get-hostname-from-client-in-wcf.html' title='Get HostName from client in WCF'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-7718191005481595145</id><published>2010-11-09T22:33:00.002-05:00</published><updated>2010-11-09T22:33:59.306-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kerberos'/><category scheme='http://www.blogger.com/atom/ns#' term='cached credentials'/><category scheme='http://www.blogger.com/atom/ns#' term='windows 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='tokens'/><category scheme='http://www.blogger.com/atom/ns#' term='logon'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><title type='text'>Updating cached credentials</title><content type='html'>Updating cached credentials for full time work at home users... &lt;br /&gt;&lt;br /&gt;I have a client that uses a VPN client and does not allow users to logon from the Windows logon screen, rather they have to already be logged in using cached credentials and then launch the VPN client and authenticate... &lt;br /&gt;&lt;br /&gt;Now this poses a significant issue deploying applications via SCCM based on a user's groups for those users who are full time work at home or road warriors, as the user's windows security token, that stores the SIDs for all their groups, never gets updated through an interactive domain logon... &lt;br /&gt;&lt;br /&gt;thus far the only solution I've found is... write a utility that prompts for the user's current password and then launch a new process / thread with those credentials just like runas.exe. This then updates the cached credentials... force the user to logoff and logon and voila the token has the new groups...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-7718191005481595145?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/7718191005481595145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2010/11/updating-cached-credentials.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/7718191005481595145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/7718191005481595145'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2010/11/updating-cached-credentials.html' title='Updating cached credentials'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-4889841903001496252</id><published>2010-08-29T11:37:00.000-04:00</published><updated>2010-08-29T11:38:20.939-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><category scheme='http://www.blogger.com/atom/ns#' term='2003'/><category scheme='http://www.blogger.com/atom/ns#' term='dhcp server'/><title type='text'>Migrate DHCP from 2003 to 2008</title><content type='html'>The DHCP database can be moved or migrated from a Windows Server 2003 server to a Windows Server 2008 server, or from one Windows Server 2008 server to another.  The information below details the necessary steps.&lt;br /&gt;Export the DHCP database from a server that is running Microsoft Windows Server 2003 or Windows Server 2008&lt;br /&gt;To move a DHCP database and configuration from a server that is running Windows Server 2003 or Windows Server 2008 to another server that is running Windows Server 2008:&lt;br /&gt;1.   Log on to the source DHCP server by using an account that is a member of the local Administrators group.&lt;br /&gt;2.   Click Start, click Run, type cmd in the Open box, and then click OK.&lt;br /&gt;3.   Type netsh dhcp server export C:\dhcp.txt all , and then press ENTER.&lt;br /&gt;Note: You must have local administrator permissions to export the data.&lt;br /&gt;Configure the DHCP server service on the server that is running Windows Server 2008&lt;br /&gt;1.   Click Start, click Administrative Tools, click Server Manager. If needed acknowledge User Account Control.&lt;br /&gt;2.   In Roles Summary click Add Roles, click Next, check DHCP server, and then click Next.&lt;br /&gt;Import the DHCP database&lt;br /&gt;1.   Log on as a user who is an explicit member of the local Administrators group. A user account in a group that is a member of the local Administrators group will not work. If a local Administrators account does not exist for the domain controller, restart the computer in Directory Services Restore Mode, and use the administrator account to import the database as described later in this section.&lt;br /&gt;2.   Copy the exported DHCP database file to the local hard disk of the Windows Server 2008-based computer.&lt;br /&gt;3.   Verify that the DHCP service is started on the Windows Server 2008-based computer.&lt;br /&gt;4.   Click Start, click Run, type cmd in the Open box, and then click OK.&lt;br /&gt;5.   At the command prompt, type netsh dhcp server import c:\dhcpdatabase.txt all , and then press ENTER, where c:\dhcpdatabase.txt is the full path and file name of the database file that you copied to the server.&lt;br /&gt;Note When you try to export a &lt;a name="#h81"&gt;DHCP&lt;/a&gt; database from a Windows 2000/2003 domain controller to a Windows Server &lt;a name="#h82"&gt;2008&lt;/a&gt; member server of the domain, you may receive the following error message:&lt;br /&gt;         Error initializing and reading the service configuration - Access Denied&lt;br /&gt;Note You must have local administrator permissions to import the data.&lt;br /&gt;6.   To resolve this issue, add the Windows Server 2008 DHCP server computer to the DHCP Admins group at the Enterprise level and redo steps 4 &amp;amp; 5.&lt;br /&gt;7.   If the "access is denied" error message occurs after you add the Windows Server 2008 DCHP server computer to the DHCP Admins group at the Enterprise level that is mentioned in step 6, verify that the user account that is currently used to import belongs to the local Administrators group. If the account does not belong to this group, add the account to that group, or log on as a local administrator to complete the import and redo steps 4 &amp;amp; 5.&lt;br /&gt;Authorize the DHCP server&lt;br /&gt;1.   Click Start, point to All Programs, point to Administrative Tools, and then click DHCP.&lt;br /&gt;Note You must be logged on to the server by using an account that is a member of the Administrators group. In an Active Directory domain, you must be logged on to the server by using an account that is a member of the Enterprise Administrators group.&lt;br /&gt;2.   In the console tree of the DHCP snap-in, expand the new DHCP server. If there is a red arrow in the lower-right corner of the server object, the server has not yet been authorized.&lt;br /&gt;3.   Right-click the server object, and then click Authorize.&lt;br /&gt;4.   After several moments, right-click the server again, and then click Refresh. A green arrow indicates that the DHCP server is authorized.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-4889841903001496252?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/4889841903001496252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2010/08/migrate-dhcp-from-2003-to-2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4889841903001496252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4889841903001496252'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2010/08/migrate-dhcp-from-2003-to-2008.html' title='Migrate DHCP from 2003 to 2008'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-1893252124237594217</id><published>2010-08-19T10:45:00.003-04:00</published><updated>2010-08-19T10:52:51.715-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpl'/><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='rundll32'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcuts'/><title type='text'>Useful Windows Shortcuts - reposted</title><content type='html'>Control Panel shortcuts. &amp;amp; Start Run commands&lt;br /&gt;&lt;br /&gt;Note: Not all commands work on all systems (ie Xp Vista)&lt;br /&gt;&lt;br /&gt;To get to Control Panel directly:&lt;br /&gt;Start-&gt;Run-&gt; Control&lt;br /&gt;&lt;br /&gt;Accessibility access.cpl&lt;br /&gt;Add/Remove Programs appwiz.cpl&lt;br /&gt;Console console.cpl&lt;br /&gt;Date and Time timedate.cpl&lt;br /&gt;Display desk.cpl&lt;br /&gt;Fax fax.cpl&lt;br /&gt;Hardware Wizard hdwwiz.cpl&lt;br /&gt;Infrared Port irprops.cpl&lt;br /&gt;International and Regional intl.cpl&lt;br /&gt;Internet Settings inetcpl.cpl&lt;br /&gt;Joystick joy.cpl&lt;br /&gt;Licensing liccpa.cpl&lt;br /&gt;Mouse and Keyboard main.cpl&lt;br /&gt;Mail mlcfg32.cpl&lt;br /&gt;Sound &amp;amp; Multimedia mmsys.cpl&lt;br /&gt;Modem &amp;amp; Phone modem.cpl&lt;br /&gt;Network and connectivity ncpa.cpl&lt;br /&gt;Network and Dial-up Connectivity netcpl.cpl&lt;br /&gt;Netware Client nwc.cpl&lt;br /&gt;ODBC odbccp32.cpl&lt;br /&gt;PC Card devapps.cpl&lt;br /&gt;Ports ports.cpl&lt;br /&gt;Power Management powercfg.cpl&lt;br /&gt;Scanner &amp;amp; Camera sticpl.cpl&lt;br /&gt;Server Management srvmgr.cpl&lt;br /&gt;Speech Properties sapi.cpl&lt;br /&gt;System sysdm.cpl&lt;br /&gt;Telephony telephon.cpl&lt;br /&gt;TweakUI tweakui.cpl&lt;br /&gt;User Manager nusrmgr.cpl&lt;br /&gt;WSP Client wspcpl32.cpl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using "Control"&lt;br /&gt;&lt;br /&gt;You may also change to a specific tab in a Control Panel Applet&lt;br /&gt;As an example:&lt;br /&gt;This will open System Restore tab in System Properties&lt;br /&gt;control mmsys.cpl,,4&lt;br /&gt;This will open the Advanced tab in System Properties&lt;br /&gt;control sysdm.cpl,,3&lt;br /&gt;This will just open System Properties:&lt;br /&gt;control sysdm.cpl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Using Shell options&lt;br /&gt;&lt;br /&gt;Where these files live in registry:&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\]&lt;br /&gt;and then search for rundll32.exe in the run command&lt;br /&gt;&lt;br /&gt;This is quite good at helping finding exact un-install strings for instance&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Control Panel&lt;br /&gt;&lt;br /&gt;module: CONTROL.EXE&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL&lt;br /&gt;result: displays all the Control Panel icons in an Explorer view&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Accessibility Properties&lt;br /&gt;&lt;br /&gt;module: ACCESS.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5&lt;br /&gt;result: displays the Accessibility General properties&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1&lt;br /&gt;result: displays the Accessibility Keyboard properties&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2&lt;br /&gt;result: displays the Accessibility Sound properties&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3&lt;br /&gt;result: displays the Accessibility Display properties&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4&lt;br /&gt;result: displays the Accessibility Mouse properties&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Add New Hardware Wizard&lt;br /&gt;&lt;br /&gt;module: hdwwiz.cpl&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL hdwwiz.cpl @1&lt;br /&gt;result: runs the Add New Hardware wizard&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Add New Printer Wizard&lt;br /&gt;&lt;br /&gt;module: SHELL32.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter&lt;br /&gt;result: runs the Add New Printer wizard&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Add/Remove Programs Property Page&lt;br /&gt;&lt;br /&gt;module: APPWIZ.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1&lt;br /&gt;result: displays the Install/Uninstall tab selected&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2&lt;br /&gt;result: displays the Windows Setup tab selected&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3&lt;br /&gt;result: displays the Startup Disk tab selected&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Briefcase&lt;br /&gt;&lt;br /&gt;module: SYNCUI.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe syncui.dll,Briefcase_Create&lt;br /&gt;result: Creates a new Briefcase on the desktop&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Copy Disk Dialog&lt;br /&gt;&lt;br /&gt;module: DISKCOPY.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe diskcopy.dll,DiskCopyRunDll&lt;br /&gt;result: displays the Copy Disk dialog for removable media&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Create New Shortcut&lt;br /&gt;&lt;br /&gt;module: APPWIZ.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe apwiz.cpl,NewLinkHere %1&lt;br /&gt;result: Displays the Create New Shortcut dialog. Completing the filename in the dialog creates a shortcut at the location specified by %1&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Date &amp;amp; Time Properties&lt;br /&gt;&lt;br /&gt;module: TIMEDATE.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0&lt;br /&gt;result: displays Set Date &amp;amp; Time properties tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1&lt;br /&gt;result: displays the Time Zone properties tab&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Dial Up Networking (DUN)&lt;br /&gt;&lt;br /&gt;module: RNAUI.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe rnaui.dll,RnaDial {name of connection to establish}&lt;br /&gt;result: displays the Connect To dialog for the passed connection. If connected, displays the connection status dialog.&lt;br /&gt;&lt;br /&gt;command: rundll32.exe rnaui.dll,RnaWizard&lt;br /&gt;result: displays the Dial Up Networking Connection Wizard&lt;br /&gt;&lt;br /&gt;MORE:&lt;br /&gt;;Launch a specific Connectiod&lt;br /&gt;;Win 95/98&lt;br /&gt;Run("rundll32.exe"," rnaui.dll,RnaDial {Connectiod}")&lt;br /&gt;*OR*&lt;br /&gt;;Win NT/2000/XP&lt;br /&gt;Run("rasdial.exe","Connectiod")&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Display Options (Standard Windows Display Property Page*)&lt;br /&gt;&lt;br /&gt;module: DESK.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0&lt;br /&gt;result: displays the Background tab selected&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1&lt;br /&gt;result: displays the Screen Saver tab selected&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2&lt;br /&gt;result: displays the Appearance tab selected&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3&lt;br /&gt;result: displays the Settings tab selected&lt;br /&gt;&lt;br /&gt;comments: Note: Your video adapter may install other property pages into DESK.CPL dynamically when selected with its own icon (i.e an ATI or Matrox control panel icon).&lt;br /&gt;Additionally, it also may invoke its own control panel applet mimicking the Windows display options.&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;FindFast&lt;br /&gt;&lt;br /&gt;module: FINDFAST.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL findfast.cpl&lt;br /&gt;result: displays the Office FindFast control&lt;br /&gt;panel applet (if installed)&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Fonts&lt;br /&gt;&lt;br /&gt;module: SHELL32.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder&lt;br /&gt;result: displays the Fonts Folder in Explorer view&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3&lt;br /&gt;result: Also displays the Fonts Folder in Explorer view&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Format Drive Dialog (floppy disk only)&lt;br /&gt;&lt;br /&gt;module: SHELL32.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,SHFormatDrive&lt;br /&gt;result: displays the floppy disk Format Drive dialog.&lt;br /&gt;Causes the Drive A to be accessed on showing.&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Game Controllers&lt;br /&gt;&lt;br /&gt;module: JOY.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0&lt;br /&gt;result: displays the Game Controllers General property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1&lt;br /&gt;result: displays the Game Controllers Advanced property page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;HTML&lt;br /&gt;&lt;br /&gt;module: MSHTML.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe mshtml.dll,PrintHTML (HTML doc to print)&lt;br /&gt;result: sends the passed file to the printer&lt;br /&gt;&lt;br /&gt;Internet Explorer Control Panel&lt;br /&gt;&lt;br /&gt;module: INETCPL.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl&lt;br /&gt;result: displays Internet Properties, General Tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,0&lt;br /&gt;result: displays Internet Properties, General Tab (same as above)&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,1&lt;br /&gt;result: displays Internet Properties, Security Tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,2&lt;br /&gt;result: displays Internet Properties, Content Tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,3&lt;br /&gt;result: displays the Internet Control Panel, Connection Tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,4&lt;br /&gt;result: displays the Internet Control Panel, Programs Tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,5&lt;br /&gt;result: displays the Internet Control Panel, Advanced Tab&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Joystick Properties (also see Games)&lt;br /&gt;&lt;br /&gt;module: JOY.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL joy.cpl&lt;br /&gt;result: displays the Joystick property page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Mail and Fax Options&lt;br /&gt;&lt;br /&gt;module: MLCFG32.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl&lt;br /&gt;result: displays the Microsoft Exchange Profiles general property page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Mail Postoffice Options&lt;br /&gt;&lt;br /&gt;module: WGPOCPL.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL wgpocpl.cpl&lt;br /&gt;result: displays the Microsoft Postoffice Workgroup Admin property page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Main Group Options/Properties&lt;br /&gt;&lt;br /&gt;module: MAIN.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0&lt;br /&gt;result: displays Mouse Properties&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1&lt;br /&gt;result: displays Keyboard Properties, Speed tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1&lt;br /&gt;result: displays Keyboard Properties, Language tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,2&lt;br /&gt;result: displays Keyboard Properties, General tab&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2&lt;br /&gt;result: displays the Printers Folder (including Add Printer)&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3&lt;br /&gt;result: displays the Fonts Folder in Explorer view&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4&lt;br /&gt;result: displays Power Management Properties&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Modem&lt;br /&gt;&lt;br /&gt;module: MODEM.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add&lt;br /&gt;result: Runs the Add New Modem wizard&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Multimedia &amp;amp; Sound Properties&lt;br /&gt;&lt;br /&gt;module: MMSYS.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0&lt;br /&gt;result: displays the Multimedia/Audio property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1&lt;br /&gt;result: displays the Multimedia/Video property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2&lt;br /&gt;result: displays the Multimedia/MIDI property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3&lt;br /&gt;result: displays the Multimedia/CD Music property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4&lt;br /&gt;result: displays the Multimedia/Advanced property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1&lt;br /&gt;result: displays the Sound Properties page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Network Properties&lt;br /&gt;&lt;br /&gt;module: NCPA.CPL&lt;br /&gt;&lt;br /&gt;command: RUNDLL32 SHELL32.DLL,Control_RunDLL NCPA.CPL&lt;br /&gt;result: displays the Networks properties, Configuration tab&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;ODBC32 Data Source Administrator&lt;br /&gt;&lt;br /&gt;module: ODBCCP32.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl&lt;br /&gt;result: displays the ODBC32 Data Source Administrator&lt;br /&gt;properties dialog&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Open With&lt;br /&gt;&lt;br /&gt;module: SHELL32.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:\path\filename}&lt;br /&gt;result: displays the application/file "Open With" dialog&lt;br /&gt;&lt;br /&gt;result: passing the full file drive, path and name as a parameter will cause the dialog to display the line "Click the program you want to use to open the file '{filename}'".&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Passwords Properties&lt;br /&gt;&lt;br /&gt;module: PASSWORD.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL password.cpl&lt;br /&gt;result: displays the Passwords properties, Change Passwords tab&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Power Management Properties&lt;br /&gt;&lt;br /&gt;module: POWERCFG.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl&lt;br /&gt;result: displays the Power Management properties, Power Schemes tab&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Printer&lt;br /&gt;&lt;br /&gt;module: SHELL32.DLL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder&lt;br /&gt;result: displays the Printers Folder (including Add Printer)&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2&lt;br /&gt;result: Also displays the Printers Folder (including Add Printer)&lt;br /&gt;&lt;br /&gt;Regional Settings&lt;br /&gt;&lt;br /&gt;module: INTL.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0&lt;br /&gt;result: displays the Regional Settings property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1&lt;br /&gt;result: displays the Numbers property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2&lt;br /&gt;result: displays the Currency property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3&lt;br /&gt;result: displays the Time property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4&lt;br /&gt;result: displays the Date property page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Screen Saver Installation&lt;br /&gt;&lt;br /&gt;module: APPWIZ.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe desk.cpl,InstallScreenSaver c:\windows\system32\sspipes.scr&lt;br /&gt;result: Installs the new screen saver and runs the display/screen saver preview property page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;System Properties&lt;br /&gt;&lt;br /&gt;module: SYSDM.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0&lt;br /&gt;result: displays the General property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1&lt;br /&gt;result: displays the Device Manager property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2&lt;br /&gt;result: displays the Hardware Profiles property page&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3&lt;br /&gt;result: displays the Performance property page&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Shutdown&lt;br /&gt;&lt;br /&gt;module: USER.EXE&lt;br /&gt;&lt;br /&gt;command: rundll32.exe user.exe,restartwindows&lt;br /&gt;result: forces Windows to perform a proper shutdown,&lt;br /&gt;and restart the computer&lt;br /&gt;&lt;br /&gt;command: rundll32.exe user.exe,exitwindows&lt;br /&gt;result: forces Windows to shutdown, and wait either&lt;br /&gt;to be turned off, or reset&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;Taskbar and Start Menu Properties&lt;br /&gt;&lt;br /&gt;module: n/a&lt;br /&gt;&lt;br /&gt;command: "rundll32.exe" shell32.dll,Options_RunDLL 1&lt;br /&gt;result: displays Taskbar and Start Menu Properties&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Telephony Properties&lt;br /&gt;&lt;br /&gt;module: TELEPHON.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl users&lt;br /&gt;result: displays the Dialing Properties dialog&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Themes&lt;br /&gt;&lt;br /&gt;module: THEMES.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL themes.cpl&lt;br /&gt;result: displays the Themes control panel app (if installed)&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;TweakUI&lt;br /&gt;&lt;br /&gt;module: TWEAKUI.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL tweakui.cpl&lt;br /&gt;result: displays the TweakUI control panel applet (if installed)&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Users Properties (Win98)&lt;br /&gt;&lt;br /&gt;module: INTECPL.CPL&lt;br /&gt;&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl users&lt;br /&gt;result: displays the Multi-User Settings properties dialog&lt;br /&gt;(MS Family Networking Login)&lt;br /&gt;&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;Wireless Wizard&lt;br /&gt;command: rundll32.exe shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW&lt;br /&gt;result: runs the Wireless Wizard&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some MSC Shortcuts (just thought I'd throw in)&lt;br /&gt;&lt;br /&gt;compmgmt.msc Computer management&lt;br /&gt;devmgmt.msc Device manager&lt;br /&gt;diskmgmt.msc Disk management&lt;br /&gt;dfrg.msc Disk defrag&lt;br /&gt;eventvwr.msc Event viewer&lt;br /&gt;eventvwr.exe &lt;a href="file://computername/"&gt;\\computername&lt;/a&gt; View the Event Log at a remote computer&lt;br /&gt;fsmgmt.msc Shared folders&lt;br /&gt;gpedit.msc Group policies&lt;br /&gt;lusrmgr.msc Local users and groups&lt;br /&gt;perfmon.msc Performance monitor&lt;br /&gt;rsop.msc Resultant set of policies&lt;br /&gt;secpol.msc Local security settings&lt;br /&gt;services.msc Various Services&lt;br /&gt;&lt;br /&gt;Enviromentals:&lt;br /&gt;&lt;br /&gt;%ALLUSERSPROFILE% C:\Documents and Settings\All Users&lt;br /&gt;%APPDATA% C:\Documents and Settings\username\Application Data&lt;br /&gt;%CLIENTNAME% Console&lt;br /&gt;%CommonProgramFiles% C:\Program Files\Common Files&lt;br /&gt;%COMPUTERNAME% computername&lt;br /&gt;%ComSpec% C:\WINDOWS\system32\cmd.exe&lt;br /&gt;%HOMEDRIVE% C:&lt;br /&gt;%HOMEPATH% \Documents and Settings\username&lt;br /&gt;%ProgramFiles% C:\Program Files&lt;br /&gt;%SESSIONNAME% Console&lt;br /&gt;%SystemDrive% C:&lt;br /&gt;%SystemRoot% C:\WINDOWS&lt;br /&gt;%TEMP% C:\DOCUME~1\username\LOCALS~1\Temp&lt;br /&gt;%TMP% C:\DOCUME~1\username\LOCALS~1\Temp&lt;br /&gt;%USERDOMAIN% Domain Name&lt;br /&gt;%USERNAME% username&lt;br /&gt;%USERPROFILE% C:\Documents and Settings\username&lt;br /&gt;%windir% C:\WINDOWS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-1893252124237594217?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/1893252124237594217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2010/08/useful-windows-shortcuts-reposted.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1893252124237594217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1893252124237594217'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2010/08/useful-windows-shortcuts-reposted.html' title='Useful Windows Shortcuts - reposted'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-7888135610033785203</id><published>2010-07-30T08:49:00.007-04:00</published><updated>2010-07-30T08:56:50.138-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virus'/><category scheme='http://www.blogger.com/atom/ns#' term='combofix'/><category scheme='http://www.blogger.com/atom/ns#' term='malware'/><category scheme='http://www.blogger.com/atom/ns#' term='search redirecct'/><category scheme='http://www.blogger.com/atom/ns#' term='asklots.com'/><title type='text'>asklots.com search redirection bastardos</title><content type='html'>asklots.com search redirect virus is a bitch and comes in many flavors, after running numerous anto-malware and spyware tools the only utility I found that worked was &lt;a href="http://www.bleepingcomputer.com/forums/index.php?showtopic=273628&amp;amp;hl=combofix"&gt;ComboFix&lt;/a&gt;. BUT read the disclaimer carefully it's not for the faint hearted and I've been working with PCs and Windows for 20 years...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.asklots.com/"&gt;http://www.asklots.com/&lt;/a&gt; are a bunch of wa#ker$!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-7888135610033785203?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.bleepingcomputer.com/forums/index.php?showtopic=273628&amp;hl=combofix' title='asklots.com search redirection bastardos'/><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/7888135610033785203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2010/07/asklotscom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/7888135610033785203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/7888135610033785203'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2010/07/asklotscom.html' title='asklots.com search redirection bastardos'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-5789359907012891693</id><published>2010-02-14T10:19:00.004-05:00</published><updated>2010-02-14T11:14:49.649-05:00</updated><title type='text'>Useful tool to trace Windows 7 startup - netsh trace</title><content type='html'>When debugging performance and logon issues in large corporations, where hooking up a sniffer can be just slightly less painful than pointy stick time, I've often found it 'painful' to get a full trace of Windows startup including network traffic. However Windows 7, though having taken away the useful userenvdebuglevel and userenv.log, have introduced full tracing 'out of the box' akin to but more evolved than old netcap.exe... and the wunderkind is:&lt;br /&gt;&lt;br /&gt;NETSH TRACE START CAPTURE=YES&lt;br /&gt;&lt;br /&gt;Drop this into a scheduled task set to run, fully elevated, at boot time, after the NIC is active and you have a full trace and log of all system actvity during the boot process. All you need do is run:&lt;br /&gt;&lt;br /&gt;NETSH TRACE STOP  (Best to run from a command prompt so you can see all the files saved extract all the contents of the NetTrace.cab and use the report.etl file as well as the NetTrace.etl)&lt;br /&gt;&lt;br /&gt;After you've logged in with the shell loaded and you'll have all the logs you need to dig into the guts of boot and logon issues.&lt;br /&gt;&lt;br /&gt;The only pain with this is the new .ETL network log format only works in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&amp;amp;displaylang=en"&gt;MS Network Monitor &lt;/a&gt;(and you &lt;a href="http://msdn.microsoft.com/en-us/library/dd569143(VS.85).aspx"&gt;have to set the parsers to Full&lt;/a&gt;) and cannot be opened in WireShark... but the new MS Network Monitor is pretty good just takes a little getting used to... note there are newer parsers published on &lt;a href="http://www.codeplex.com/"&gt;www.codeplex.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another useful article is here &lt;a href="http://blogs.technet.com/netmon/archive/2010/01/04/capturing-a-trace-a-boot-up.aspx"&gt;http://blogs.technet.com/netmon/archive/2010/01/04/capturing-a-trace-a-boot-up.aspx&lt;/a&gt; and covers using nmcap.exe to take the trace but you could just as easily replace nmcap with another capture tool e.g. winpcap&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://blogs.technet.com/netmon/"&gt;netmon blog&lt;/a&gt; is a great resource for debugging...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-5789359907012891693?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/5789359907012891693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2010/02/useful-tool-to-trace-windows-7-startup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/5789359907012891693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/5789359907012891693'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2010/02/useful-tool-to-trace-windows-7-startup.html' title='Useful tool to trace Windows 7 startup - netsh trace'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-357983381173113234</id><published>2010-01-23T12:27:00.001-05:00</published><updated>2010-01-23T12:33:21.779-05:00</updated><title type='text'>really should update something</title><content type='html'>Happy New Year! roll on 2010!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-357983381173113234?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/357983381173113234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2010/01/really-should-update-something.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/357983381173113234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/357983381173113234'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2010/01/really-should-update-something.html' title='really should update something'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-4031484271040974094</id><published>2009-11-08T13:47:00.001-05:00</published><updated>2009-11-08T13:48:44.465-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='active directory'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><category scheme='http://www.blogger.com/atom/ns#' term='GPO'/><title type='text'>Local group policy toolset</title><content type='html'>Useful toolset from Microsoft for turning text into policy settings and applying local group policies:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.technet.com/fdcc/pages/LGPO-Utilities.aspx"&gt;local group policy toolset posted on the FDCC blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-4031484271040974094?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.technet.com/fdcc/pages/LGPO-Utilities.aspx' title='Local group policy toolset'/><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/4031484271040974094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/11/local-group-policy-toolset-posted-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4031484271040974094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4031484271040974094'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/11/local-group-policy-toolset-posted-on.html' title='Local group policy toolset'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-1104219841152119875</id><published>2009-11-07T10:18:00.005-05:00</published><updated>2009-11-07T11:40:58.654-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rdp'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='terminal services'/><category scheme='http://www.blogger.com/atom/ns#' term='Credentials'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>network level authentication xp</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;Enabling Network Level Authentication on Windows XP Service Pack 3 for access to Server 2008 via Remote Desktop&lt;br /&gt;&lt;br /&gt;"The remote computer requires Network Level Authentication, which your computer does not support."&lt;br /&gt;&lt;br /&gt;To enable NLA on XP SP3, run regedit.exe:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;1. Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;2. Add &lt;strong&gt;tspkg&lt;/strong&gt; to the Security Packages REG_MULTI_SZ&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;3. Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;4. Add &lt;strong&gt;credssp.dll&lt;/strong&gt; to the SecurityProviders REG_SZ (separated by commas) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;5. Reboot&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;happys days&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-1104219841152119875?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/1104219841152119875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/11/network-level-authentication-xp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1104219841152119875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1104219841152119875'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/11/network-level-authentication-xp.html' title='network level authentication xp'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-2461631733532732350</id><published>2009-11-03T10:41:00.006-05:00</published><updated>2009-11-03T10:54:56.207-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='Credentials'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>OpenDSObject in Windows 7 "a local error has occurred"</title><content type='html'>&lt;span style="font-family:arial;"&gt;Someone pinged me with a bug in a script on Windows 7 with a permissioned bind to AD over LDAP using the DN of a user. They received the error message: 0x8007203B error ("a local error has occurred"). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;F&lt;/span&gt;&lt;span style="font-family:arial;"&gt;rom this:&lt;/span&gt;&lt;br /&gt;Const ADS_SECURE_AUTHENTICATION = 1&lt;br /&gt;Const ADS_USE_ENCRYPTION = 2&lt;br /&gt;strPath = &lt;a href="ldap://cn=machine,ou=Finance,dc=fabrikam,dc=com/"&gt;ldap://cn=machine,ou=Finance,dc=fabrikam,dc=com/&lt;/a&gt;&lt;br /&gt;strUser = "&lt;strong&gt;cn=user,dc=fabrikam,dc=com&lt;/strong&gt;"&lt;br /&gt;strPassword = "4rTGh2#1"&lt;br /&gt;Set objDSO = GetObject("LDAP:")&lt;br /&gt;Set objThing = objDSO.OpenDSObject (strPath, strUser, strPassword, ADS_SECURE_AUTHENTICATION)&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Apparently it worked under Windows XP...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;The solution ... change strUser = "cn=user,dc=fabrikam,dc=com" to strUser = "fabrikam\user" or &lt;a href="mailto:user@fabrikam.com"&gt;user@fabrikam.com&lt;/a&gt; Windows 7 does not like the user DN...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-2461631733532732350?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/2461631733532732350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/11/opendsobject-in-windows-7-local-error.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/2461631733532732350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/2461631733532732350'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/11/opendsobject-in-windows-7-local-error.html' title='OpenDSObject in Windows 7 &quot;a local error has occurred&quot;'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-6905470562712360672</id><published>2009-09-26T13:22:00.000-04:00</published><updated>2009-09-26T13:23:49.753-04:00</updated><title type='text'>Windows 7 Kerberos updates and foreign realms</title><content type='html'>I bit the bullet, bought a new 500Gb Seagate drive for my laptop, VM’d my Vista install, swapped the drive and changed my main laptop to Windows 7 over the weekend, and apart from Sony PC Suite, which just sits in the system tray looking dead, everything is running better than ever… 4Gb of ram certainly helps things along but this is faster than XP Sp3 in my FITA (Finger In The Air) opinion and light years ahead of Vista aka Windows Me 2007 …&lt;br /&gt;So I added the laptop to my AD domain e.g. lingpopo.net and then while at a client site mapped a drive to a server in their AD domain e.g. bank.corp.com, saved the credentials and all worked as expected… but later while I was debugging a kerberos issue with some users on XP I forgot I was on 7 and ran klist (now an OS standard tool at least in 7 RC1) and noticed something strange but very pleasing. Rather than just seeing a TGT from my domain e.g. me @ lingpopo.net I now saw TGTs for the me @ bank.corp.com and cifs TGS tickets for the server in bank.corp.com! Sweetness! I’m getting TGTs and tickets for resource from an untrusted realm / forest / domain, no more failover to NTLM outside the forest / trust boundary, brilliant! but how? I need to know…This did not happen in XP or Vista, so what have Microsoft done? I’ve only noticed this behaviour today and have started digging out details on Kerberos improvements in Windows 7 but thus far i’ve found zip, nada, nowt… once I do I’ll be sure to post…&lt;br /&gt;Anyway random stuff and quite interesting, at least to me…&lt;br /&gt;Got a response from Microsoft &lt;a href="http://social.microsoft.com/Forums/en-US/partnerwinclient7rc/thread/1d73bc86-37b2-4201-8dfd-e2366495c6b8"&gt;Response from MS&lt;/a&gt; which says the functionality was always there but imho it wasn't... but going to dig out an xp and vista vpc and retest just to be sure...&lt;br /&gt;Update 7/1/09 :- I recompiled and used this old tool of mine &lt;a href="http://www.brianhehir.com/ktickets.exe"&gt;http://www.brianhehir.com/ktickets.exe&lt;/a&gt; to try and validate the tickets under Windows 7 and Windows XP. Running this tool under Windows 7 gives totally different results to running KLIST.EXE under Windows 7 but the results from kticket.exe are consistent between Windows 7 and Windows XP. So is it just Klist.exe that is different between Windows 7 and Windows XP or is there some underlying fundamental difference with Kerberos in Windows 7... Only way to be sure is going to take a network trace and compare.... &lt;br /&gt;Update 9/26/09:- not forgotten this one, should be getting the traces this week...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-6905470562712360672?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/6905470562712360672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/09/windows-7-kerberos-updates-and-foreign.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/6905470562712360672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/6905470562712360672'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/09/windows-7-kerberos-updates-and-foreign.html' title='Windows 7 Kerberos updates and foreign realms'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-4080720357719274432</id><published>2009-09-26T13:21:00.000-04:00</published><updated>2009-09-26T13:21:36.667-04:00</updated><title type='text'>The difference in TRUNCATE and DELETE in Sql Server - Raymond Lewallen - CodeBetter.Com - Stuff you need to Code Better!</title><content type='html'>Shamelessly stole this as I just found it very useful setting up some resiliency through replication on a DB...&lt;br /&gt;&lt;a href="http://codebetter.com/blogs/raymond.lewallen/archive/2005/05/09/62960.aspx"&gt;The difference in TRUNCATE and DELETE in Sql Server - Raymond Lewallen - CodeBetter.Com - Stuff you need to Code Better!&lt;/a&gt;:&lt;br /&gt;"The difference in TRUNCATE and DELETE in Sql Server&lt;br /&gt;I’ve answered this question many times, and answered it again this weekend. What is the difference when doing a DELETE TableA instead of TRUNCATE TableA? A common misconception is that they do the same thing. Not so. In fact, there are many differences between the two.&lt;br /&gt;DELETE is a logged operation on a per row basis. This means that the deletion of each row gets logged and physically deleted.&lt;br /&gt;You can DELETE any row that will not violate a constraint, while leaving the foreign key or any other constraint in place.&lt;br /&gt;TRUNCATE is also a logged operation, but in a different way. TRUNCATE logs the deallocation of the data pages in which the data exists. The deallocation of data pages means that your data rows still actually exist in the data pages, but the extents have been marked as empty for reuse. This is what makes TRUNCATE a faster operation to perform over DELETE.&lt;br /&gt;You cannot TRUNCATE a table that has any foreign key constraints. You will have to remove the constraints, TRUNCATE the table, and reapply the constraints.&lt;br /&gt;TRUNCATE will reset any identity columns to the default seed value. This means if you have a table with an identity column and you have 264 rows with a seed value of 1, your last record will have the value 264 (assuming you started with value 1) in its identity columns. After TRUNCATEing your table, when you insert a new record into the empty table, the identity column will have a value of 1. DELETE will not do this. In the same scenario, if you DELETEd your rows, when inserting a new row into the empty table, the identity column will have a value of 265."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-4080720357719274432?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://codebetter.com/blogs/raymond.lewallen/archive/2005/05/09/62960.aspx' title='The difference in TRUNCATE and DELETE in Sql Server - Raymond Lewallen - CodeBetter.Com - Stuff you need to Code Better!'/><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/4080720357719274432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/09/difference-in-truncate-and-delete-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4080720357719274432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4080720357719274432'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/09/difference-in-truncate-and-delete-in.html' title='The difference in TRUNCATE and DELETE in Sql Server - Raymond Lewallen - CodeBetter.Com - Stuff you need to Code Better!'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-1476138179300850308</id><published>2009-09-15T04:07:00.003-04:00</published><updated>2009-09-15T04:15:02.809-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='active directory'/><category scheme='http://www.blogger.com/atom/ns#' term='Kerberos'/><category scheme='http://www.blogger.com/atom/ns#' term='tokens'/><category scheme='http://www.blogger.com/atom/ns#' term='nested groups'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>SQL Authentication issues and MaxTokenSize</title><content type='html'>&lt;p&gt;&lt;u&gt;&lt;b&gt;Saved my bacon yesterday so selflessly reposted the link below:&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;b&gt;Problem&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;DBA's and web developers at our company are  experiencing issues with connecting to SQL instances using SQL Server Management  Studio and other SQL tools using Windows Integrated Authentication. Our company  is large, with well over 70,000 users and groups in Active Directory. When we  look in the NT event log on the SQL Server we see both MSSQL and Kerberos  errors. What could be causing this? &lt;/p&gt; &lt;p&gt;&lt;u&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;The issue occurs when a user has membership in  many Active Directory groups, usually over 100 (this number includes explicit  membership as well as inherited membership from other groups). The default value  for the MaxTokenSize is 12000 decimal, although there is no registry entry for  the default value. In the great majority of organizations this size is more than  adequate; however, in large organizations users' tokens may be larger than the  default. Since Kerberos won't accept broken tokens, authentication fails. If you  are encountering this issue you will see two errors indicating that the default  MaxTokenSize is not sufficient: &lt;/p&gt; &lt;center&gt; &lt;table style="TEXT-ALIGN: left; FONT-FAMILY: Arial; FONT-SIZE: small" border="1" width="600"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style="BACKGROUND-COLOR: #dcdcdc"&gt; &lt;p style="TEXT-ALIGN: center"&gt;&lt;b&gt;&lt;span style="font-size:85%;"&gt;NT error log entry from the  Kerberos service&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;p style="TEXT-ALIGN: center"&gt;&lt;span style="font-size:85%;"&gt;&lt;img alt="Kerberos message in the NT event log" src="http://www.mssqltips.com/tipImages/1557_kerberos_01.PNG" width="402" height="446" /&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="BACKGROUND-COLOR: #dcdcdc"&gt; &lt;p style="TEXT-ALIGN: center"&gt;&lt;b&gt;&lt;span style="font-size:85%;"&gt;NT error log entry from the MSSQL  service&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;p style="TEXT-ALIGN: center"&gt;&lt;span style="font-size:85%;"&gt;&lt;img alt="MSSQL message in the NT event log" src="http://www.mssqltips.com/tipImages/1557_kerberos_02.PNG" width="403" height="448" /&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt; &lt;p&gt;Microsoft has a utility called &lt;b&gt;TokenSZ&lt;/b&gt; that can be used to determine  the MaxTokenSize for a user. There are a number of switches that can be used  with the utility, but the general syntax to calculate the max token size is:  &lt;/p&gt; &lt;center&gt; &lt;table style="TEXT-ALIGN: left; FONT-FAMILY: Arial; FONT-SIZE: small" border="1" width="600"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td bg style="color:#dcdcdc;"&gt; &lt;p style="TEXT-ALIGN: center"&gt;&lt;b&gt;&lt;span style="font-size:85%;"&gt;Sample TokenSZ  Syntax&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;E:\&gt;tokensz /compute_tokensize /user:Administrator  /domain:CULLENSOLUTIONS.com /password:OU812&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td style="BACKGROUND-COLOR: #dcdcdc"&gt; &lt;p style="TEXT-ALIGN: center"&gt;&lt;b&gt;&lt;span style="font-size:85%;"&gt;Results of executing  TOKENSZ&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;p style="TEXT-ALIGN: center"&gt;&lt;span style="font-size:85%;"&gt;&lt;img alt="Output after executing TokenSZ" src="http://www.mssqltips.com/tipImages/1557_tokensz_output.PNG" width="391" height="210" /&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt; &lt;p&gt;At the top of the window above you can see that the default token size is  12000. The text outlined in red is the actual Max Token size for the  Administrator of the domain...well below the MaxToken default. The company I am  currently assigned to is encountering MaxTokenSizes between 12000 to 15000 so a  modification was required. &lt;/p&gt; &lt;p&gt;A registry entry modification or addition is required to modify the default  MaxTokenSize allowed by the server. The location of the registry change is in  the  &lt;b&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters&lt;/b&gt;  section. Note that the server on which TOKENSZ was executed does not have an  entry for MaxTokenSize: &lt;/p&gt; &lt;center&gt;&lt;img alt="Parameter Values in the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters section" src="http://www.mssqltips.com/tipImages/1557_kerberos_registry_parameters01.PNG" width="649" height="201" /&gt; &lt;/center&gt; &lt;p&gt;To create the registry entry, open Registry Editor by clicking Start -&gt;  Run, then typing &lt;b&gt;regedit&lt;/b&gt;. Once Registry Editor is open navigate to the  &lt;b&gt;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters&lt;/b&gt;  section. Right-click the white area on the right side and choose New -&gt; DWORD  value: &lt;/p&gt; &lt;center&gt;&lt;img alt="Creating a new DWORD value" src="http://www.mssqltips.com/tipImages/1557_maxtokensize01.PNG" width="646" height="216" /&gt; &lt;/center&gt; &lt;p&gt;Rename the entry to "MaxTokenSize", double-click to edit it, choose Decimal,  and enter 65535: &lt;/p&gt; &lt;center&gt;&lt;img alt="Editing the value of the Registry entry" src="http://www.mssqltips.com/tipImages/1557_maxtokensize02.PNG" width="646" height="309" /&gt; &lt;/center&gt; &lt;p&gt;Any server workstation or server that interacts with SQL Server will require  the registry entry. Also, the machine will require a reboot for the change to  take effect. Once the reboot has occurred you can execute TokenSZ again to see  if the MaxTokenSize value has changed: &lt;/p&gt; &lt;center&gt;&lt;img alt="Result of TokenSZ execution after modifying the MaxTokenSize value" src="http://www.mssqltips.com/tipImages/1557_tokensz_output1.PNG" width="387" height="209" /&gt; &lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-1476138179300850308?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.mssqltips.com/tip.asp?tip=1557' title='SQL Authentication issues and MaxTokenSize'/><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/1476138179300850308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/09/sql-authentication-issues-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1476138179300850308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1476138179300850308'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/09/sql-authentication-issues-and.html' title='SQL Authentication issues and MaxTokenSize'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-3716366327860401959</id><published>2009-08-03T19:43:00.000-04:00</published><updated>2009-08-03T19:43:08.227-04:00</updated><title type='text'>Who Owns Your Online Documents?</title><content type='html'>Very interesting read...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://webworkerdaily.com/2008/07/03/who-owns-your-online-documents/"&gt;Who Owns Your Online Documents?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-3716366327860401959?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://webworkerdaily.com/2008/07/03/who-owns-your-online-documents/' title='Who Owns Your Online Documents?'/><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/3716366327860401959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/08/who-owns-your-online-documents.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3716366327860401959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3716366327860401959'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/08/who-owns-your-online-documents.html' title='Who Owns Your Online Documents?'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-1343191655343199595</id><published>2009-07-18T16:31:00.003-04:00</published><updated>2009-07-18T16:36:09.639-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tsql'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Enable Snapshots</title><content type='html'>Very useful to avoid lockouts with DBs being accessed and updated...:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ALTER DATABASE YourDatabase&lt;br /&gt;SET SINGLE_USER WITH NOWAIT&lt;br /&gt;GO&lt;br /&gt;ALTER DATABASE YourDatabase&lt;br /&gt;SET ALLOW_SNAPSHOT_ISOLATION ON&lt;br /&gt;GO&lt;br /&gt;ALTER DATABASE YourDatabase&lt;br /&gt;SET READ_COMMITTED_SNAPSHOT ON&lt;br /&gt;GO&lt;br /&gt;ALTER DATABASE YourDatabase&lt;br /&gt;SET MULTI_USER WITH NOWAIT&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;--Report status on all databases&lt;br /&gt;SELECT name,&lt;br /&gt;CASE is_read_committed_snapshot_on&lt;br /&gt;WHEN 1 THEN 'yes' ELSE 'no' END AS Read_Committed_Snapshot_Enabled&lt;br /&gt;FROM sys.databases&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-1343191655343199595?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/1343191655343199595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/07/enable-snapshots.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1343191655343199595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1343191655343199595'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/07/enable-snapshots.html' title='Enable Snapshots'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-2858390139791322929</id><published>2009-07-16T20:12:00.005-04:00</published><updated>2009-07-16T20:30:52.720-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='River Cottage'/><title type='text'>Landshare USA?</title><content type='html'>I'm a big fan of the River Cottage series in the UK particularly Hugh's most recent addition, the &lt;a href="http://www.channel4.com/landshare"&gt;Landshare &lt;/a&gt;program where people who want to grow their own food but don't have the space are put in contact with those that do and vice versa... brilliant! Anyone interested in starting something similar in the U.S.A.?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-2858390139791322929?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/2858390139791322929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/07/landshare-usa.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/2858390139791322929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/2858390139791322929'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/07/landshare-usa.html' title='Landshare USA?'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-8414114719612871725</id><published>2009-07-16T16:40:00.002-04:00</published><updated>2009-07-16T17:09:02.758-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WMI'/><category scheme='http://www.blogger.com/atom/ns#' term='RSOP'/><category scheme='http://www.blogger.com/atom/ns#' term='GPO'/><title type='text'>RSOP through WMI</title><content type='html'>I've noticed a lot of people with problems retrieving user Resultant Set Of Policy - RSOP information from WMI using root/RSOP... computer RSOP works fine:&lt;br /&gt;&lt;br /&gt;strComputer = "."&lt;br /&gt;Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\rsop\computer")&lt;br /&gt;Set colItems = objWMIService.ExecQuery("Select * from RSOP_GPO")&lt;br /&gt;For Each objItem In colItems&lt;br /&gt;Wscript.Echo "Name: " &amp;amp; objItem.Name&lt;br /&gt;Wscript.Echo "GUID Name: " &amp;amp; objItem.GUIDNameWscript.Echo "ID: " &amp;amp; objItem.ID&lt;br /&gt;Wscript.Echo "Access Denied: " &amp;amp; objItem.AccessDenied&lt;br /&gt;Wscript.Echo "Enabled: " &amp;amp; objItem.Enabled&lt;br /&gt;Wscript.Echo "File System path: " &amp;amp; objItem.FileSystemPath&lt;br /&gt;Wscript.Echo "Filter Allowed: " &amp;amp; objItem.FilterAllowed&lt;br /&gt;Wscript.Echo "Filter ID: " &amp;amp; objItem.FilterId&lt;br /&gt;Wscript.Echo "Version: " &amp;amp; objItem.Version&lt;br /&gt;Wscript.Echo&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;Works without issue but root\rsop\user\%SID% does not retrieve anything... to fix you must replace the hyphens - in the SID with underscores _ !!&lt;br /&gt;&lt;br /&gt;So:&lt;br /&gt;S-1-5-21-1708537768-688789844-1994488-12833 should be S_1_5_21_1708537768_688789844_1994488_12833&lt;br /&gt;&lt;br /&gt;so:&lt;br /&gt;&lt;br /&gt;strComputer = "."&lt;br /&gt;Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\cimv2")&lt;br /&gt;Set objAccount = objWMIService.Get("Win32_UserAccount.Name='joeblow',Domain='YourDomain'")&lt;br /&gt;Wscript.Echo objAccount.SID&lt;br /&gt;&lt;strong&gt;strWMISID = replace (objAccount.SID,"-","_")&lt;/strong&gt;&lt;br /&gt;Set objWMIService = Nothing&lt;br /&gt;Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp;amp; strComputer &amp;amp; "\root\rsop\user\" &amp;amp; strWMISID)&lt;br /&gt;Set colItems = objWMIService.ExecQuery("Select * from RSOP_GPO")&lt;br /&gt;For Each objItem In colItems&lt;br /&gt;Wscript.Echo "Name: " &amp;amp; objItem.Name&lt;br /&gt;Wscript.Echo "GUID Name: " &amp;amp; objItem.GUIDNameWscript.Echo "ID: " &amp;amp; objItem.ID&lt;br /&gt;Wscript.Echo "Access Denied: " &amp;amp; objItem.AccessDenied&lt;br /&gt;Wscript.Echo "Enabled: " &amp;amp; objItem.Enabled&lt;br /&gt;Wscript.Echo "File System path: " &amp;amp; objItem.FileSystemPath&lt;br /&gt;Wscript.Echo "Filter Allowed: " &amp;amp; objItem.FilterAllowed&lt;br /&gt;Wscript.Echo "Filter ID: " &amp;amp; objItem.FilterId&lt;br /&gt;Wscript.Echo "Version: " &amp;amp; objItem.Version&lt;br /&gt;Wscript.Echo&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;Voila! it now works...&lt;br /&gt;&lt;br /&gt;FYI - Get the logged on user with:&lt;br /&gt;&lt;br /&gt;Set colSessions = objWMI.ExecQuery("Select * from Win32_LogonSession Where LogonType = 2")&lt;br /&gt;If colSessions.Count = 0 Then&lt;br /&gt;    Wscript.Echo "No interactive users found"&lt;br /&gt;Else&lt;br /&gt;   For Each objSession in colSessions          &lt;br /&gt;      Set colList = objWMI.ExecQuery("Associators of {Win32_LogonSession.LogonId=" &amp;amp; objSession.LogonId &amp;amp; "} Where AssocClass=Win32_LoggedOnUser Role=Dependent" )     &lt;br /&gt;      For Each objItem in colList&lt;br /&gt;      WScript.Echo "Username: " &amp;amp; objItem.Name &amp;amp; " SID: " &amp;amp; &lt;strong&gt;objItem.SID&lt;/strong&gt;&lt;br /&gt;      WScript.Echo "&lt;strong&gt;WMISID&lt;/strong&gt;: " &amp;amp; replace(objItem.SID,"-","_")&lt;br /&gt;     Next&lt;br /&gt;    Next&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;Consistency is a wonderful thing... maybe the WMI namespace adheres to some standard that prevents hyphens but allows underscores... who knows...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-8414114719612871725?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/8414114719612871725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/07/rsop-through-wmi.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8414114719612871725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8414114719612871725'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/07/rsop-through-wmi.html' title='RSOP through WMI'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-4806749070269484556</id><published>2009-07-10T10:52:00.002-04:00</published><updated>2009-07-10T10:59:46.135-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Old junk SSMS (SQL Server Management Studio) Crashes opening query with CROSS APPLY</title><content type='html'>How damn annoying SQL 2005 SP3 Management Studio crashes everytime when trying to open an existing query in the designer that has a CROSS APPLY in it! arggh!&lt;br /&gt;&lt;br /&gt;No worries it's fixed in SQL 2008 Management Studio, well the error is trapped and it just says it can't display the query rather than crashing but it's better than nothing...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-4806749070269484556?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/4806749070269484556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/07/old-junk-ssms-sql-server-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4806749070269484556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4806749070269484556'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/07/old-junk-ssms-sql-server-management.html' title='Old junk SSMS (SQL Server Management Studio) Crashes opening query with CROSS APPLY'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-419478193368974041</id><published>2009-07-06T09:57:00.001-04:00</published><updated>2009-07-06T09:59:01.514-04:00</updated><title type='text'>Forrester: IT spending will rebound in time for Windows 7 launch</title><content type='html'>This looks very promising both for Enterprise users and for those delivering those solutions to the Enterprise... &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9135000&amp;amp;intsrc=news_ts_head"&gt;Forrester: IT spending will rebound in time for Windows 7 launch&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-419478193368974041?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9135000&amp;intsrc=news_ts_head' title='Forrester: IT spending will rebound in time for Windows 7 launch'/><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/419478193368974041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/07/forrester-it-spending-will-rebound-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/419478193368974041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/419478193368974041'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/07/forrester-it-spending-will-rebound-in.html' title='Forrester: IT spending will rebound in time for Windows 7 launch'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-8713048626045682157</id><published>2009-06-25T22:18:00.005-04:00</published><updated>2009-07-01T20:47:10.129-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kerberos'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Windows 7 Kerberos updates and foreign realms</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_zaLZ0547qRY/SkwCPd9gQiI/AAAAAAAAAHw/z2hZg4USyUQ/s1600-h/ktickets.png"&gt;&lt;/a&gt;&lt;div&gt;&lt;div&gt;&lt;span style="LINE-HEIGHT: 16px;font-size:12;" class="Apple-style-span" &gt;&lt;br /&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I bit the bullet, bought a new 500Gb Seagate drive for my laptop, VM’d my Vista install, swapped the drive and changed my main laptop to Windows 7 over the weekend, and apart from Sony PC Suite, which just sits in the system tray looking dead, everything is running better than ever… 4Gb of ram certainly helps things along but this is faster than XP Sp3 in my FITA (Finger In The Air) opinion and light years ahead of Vista aka Windows Me 2007 …&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;So I added the laptop to my AD domain e.g. lingpopo.net and then while at a client site mapped a drive to a server in their AD domain e.g. bank.corp.com, saved the credentials and all worked as expected… but later while I was debugging a kerberos issue with some users on XP I forgot I was on 7 and ran klist (now an OS standard tool at least in 7 RC1) and noticed something strange but very pleasing. Rather than just seeing a TGT from my domain e.g. me @ lingpopo.net I now saw TGTs for the me @ bank.corp.com and cifs TGS tickets for the server in bank.corp.com! Sweetness! I’m getting TGTs and tickets for resource from an untrusted realm / forest / domain, no more failover to NTLM outside the forest / trust boundary, brilliant! but how? I need to know…&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;This did not happen in XP or Vista, so what have Microsoft done? I’ve only noticed this behaviour today and have started digging out details on Kerberos improvements in Windows 7 but thus far i’ve found zip, nada, nowt… once I do I’ll be sure to post…&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Anyway random stuff and quite interesting, at least to me…&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none"&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="LINE-HEIGHT: 19px;font-size:100%;" class="Apple-style-span" &gt;Got a response from Microsoft &lt;a href="http://social.microsoft.com/Forums/en-US/partnerwinclient7rc/thread/1d73bc86-37b2-4201-8dfd-e2366495c6b8"&gt;Response from MS&lt;/a&gt; which says the functionality was always there but imho it wasn't... but going to dig out an xp and vista vpc and retest just to be sure...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none"&gt;&lt;span style="font-size:100%;"&gt;Update 7/1/09 :- I recompiled and used this old tool of mine &lt;a href="http://www.brianhehir.com/ktickets.exe"&gt;http://www.brianhehir.com/ktickets.exe&lt;/a&gt; to try and validate the tickets under Windows 7 and Windows XP. Running this tool under Windows 7 gives totally different results to running KLIST.EXE under Windows 7 but the results from kticket.exe are consistent between Windows 7 and Windows XP. So is it just Klist.exe that is different between Windows 7 and Windows XP or is there some underlying fundamental difference with Kerberos in Windows 7... Only way to be sure is going to take a network trace and compare....&lt;/span&gt;&lt;/p&gt;&lt;/span&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/6233128224633539222-8713048626045682157?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/8713048626045682157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/windows-7-kerberos-updates-and-foreign.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8713048626045682157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8713048626045682157'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/windows-7-kerberos-updates-and-foreign.html' title='Windows 7 Kerberos updates and foreign realms'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-4935294665949780515</id><published>2009-06-25T10:02:00.005-04:00</published><updated>2009-06-25T10:08:04.724-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='netsh'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><title type='text'>Show Wireless networks with details including strength</title><content type='html'>Useful for getting the strength and options of all available wireless networks for Vista, Windows 7 and Windows 2008:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;netsh wlan show networks mode=bssid&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gives the following type of info:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;SSID 20 : linksys_SES_35580&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Network type            : Infrastructure&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Authentication          : WPA2-Personal&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;Encryption              : CCMP&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;BSSID 1                 : 00:14:bf:79:41:c8&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Signal             : 15%&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Radio type         : 802.11g&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Channel            : 6&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Basic rates (Mbps) : 1 2 5.5 11&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;Other rates (Mbps) : 6 9 12 18 24 36 48 54&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/6233128224633539222-4935294665949780515?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/4935294665949780515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/netsh-wlan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4935294665949780515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/4935294665949780515'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/netsh-wlan.html' title='Show Wireless networks with details including strength'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-5182281257812797305</id><published>2009-06-24T13:29:00.002-04:00</published><updated>2009-06-24T13:34:44.878-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clr'/><category scheme='http://www.blogger.com/atom/ns#' term='ad'/><category scheme='http://www.blogger.com/atom/ns#' term='groups'/><category scheme='http://www.blogger.com/atom/ns#' term='novell'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>SQL CLR &amp; LDAP</title><content type='html'>&lt;span class="Apple-style-span"   style=" color: rgb(40, 40, 40);  line-height: 13px; font-family:Arial;font-size:11px;"&gt;&lt;p style="margin-top: 5px; margin-right: 0px; margin-bottom: 20px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 11px; line-height: 1.2; color: rgb(40, 40, 40); font-family: Arial, Verdana, 'Trebuchet MS', Tahoma, sans-serif; font-style: normal; font-weight: normal; text-decoration: none; "&gt;&lt;a href="http://www.brianhehir.com/6.html"&gt;Follow the link&lt;/a&gt; for an example of using Novell LDAP under SQL 2005 CLR, you'll need the Mono libraries installed, the certificate installed in the Mono certificate manager if using SSL, the db set to trustworthy or all the libraries re-compiled as signed etc. then create the novell assemblies then deploy this via VS...&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-5182281257812797305?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.brianhehir.com/6.html' title='SQL CLR &amp; LDAP'/><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/5182281257812797305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/sql-clr-ldap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/5182281257812797305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/5182281257812797305'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/sql-clr-ldap.html' title='SQL CLR &amp; LDAP'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-3500136158817400078</id><published>2009-06-24T13:25:00.001-04:00</published><updated>2009-06-24T13:26:33.060-04:00</updated><title type='text'>but I don't like spam</title><content type='html'>Humanity has triumphed over the robots, spam is off the menu!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-3500136158817400078?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/3500136158817400078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/but-i-dont-like-spam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3500136158817400078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3500136158817400078'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/but-i-dont-like-spam.html' title='but I don&apos;t like spam'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-6919189543344912520</id><published>2009-06-22T18:49:00.004-04:00</published><updated>2009-06-22T20:32:09.376-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spam'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Spam, eggs, spam, spam and spam...</title><content type='html'>So the robots are calling me spam!&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/anwy2MPT5RE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/anwy2MPT5RE&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;I received a notice that this blog had been classified as spam and I had to post a request for a human being to review and take me off the list... strange but I think I know why... I think it was because I posted the same information in two posts and then the About Me section while I was creating the site... why? well because I tried to import the blog from wordpress but the conversion program here &lt;a href="http://wordpress2blogger.appspot.com/"&gt;http://wordpress2blogger.appspot.com/&lt;/a&gt; just did not work no matter what I did.. so as there were only half a dozen posts I wanted anyway I manually updated them and voila balls'd it up...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;but it's weird the robots caught that and classified it so quickly, less than an hour. They must scan the blogs on a much higher schedule than any other indexer, which is interesting, or I was just unlucky, which is a pain in the aris... anyway hopefully I'll be reclassified as non-spam pdq...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-6919189543344912520?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/6919189543344912520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/spam-eggs-spam-spam-and-spam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/6919189543344912520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/6919189543344912520'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/spam-eggs-spam-spam-and-spam.html' title='Spam, eggs, spam, spam and spam...'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-3972457876222582150</id><published>2009-06-22T14:22:00.001-04:00</published><updated>2009-06-22T14:41:30.990-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Shell:'/><title type='text'>Windows 7 Shell:SendTo</title><content type='html'>&lt;span style="LINE-HEIGHT: 16px; COLOR: rgb(51,51,51)font-family:'Lucida Grande';font-size:12;" class="Apple-style-span"  &gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Need to update the Send To list in Windows 7? Start – Run (Windows+R) Shell:SendTo brings up your SendTo list; just add what you need e.g. notepad.lnk.. easy!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;To see all possible options hold down SHIFT and Right-click the item then navigate to SendTo… too many options…&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Other useful Shell: commands:-&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;shell:Libraries&lt;br /&gt;shell:DocumentsLibrary&lt;br /&gt;shell:User Pinned&lt;br /&gt;shell:UsersLibrariesFolder&lt;br /&gt;shell:PicturesLibrary&lt;br /&gt;shell:ImplicitAppShortcuts&lt;br /&gt;shell:Ringtones&lt;br /&gt;shell:MusicLibrary&lt;br /&gt;shell:VideosLibrary&lt;br /&gt;shell:OtherUsersFolder&lt;br /&gt;shell:Device Metadata Store&lt;br /&gt;shell:PublicSuggestedLocations&lt;br /&gt;shell:CommonRingtones&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Will post more when I find them&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-3972457876222582150?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/3972457876222582150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/windows-7-shellsendto.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3972457876222582150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/3972457876222582150'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/windows-7-shellsendto.html' title='Windows 7 Shell:SendTo'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-1855227656725856569</id><published>2009-06-22T12:21:00.000-04:00</published><updated>2009-06-22T14:47:54.152-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Identity'/><title type='text'>Directory Intelligence Services</title><content type='html'>&lt;span style="LINE-HEIGHT: 16px; COLOR: rgb(51,51,51)" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Started working on a new product for &lt;/span&gt;&lt;/span&gt;&lt;a style="COLOR: rgb(0,102,204); TEXT-DECORATION: none" title="The BMA Data Group" href="http://www.bmadata.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;BMA Data&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; that easily allows you to import all your data from AD, Novell or other LDAP directory directly into mySQL or SQL 2005 / 2008 for offline heavy-duty data crunching. We’re going to call this&lt;/span&gt;&lt;/span&gt;&lt;a style="COLOR: rgb(0,102,204); TEXT-DECORATION: none" title="Directory Intelligence Services" href="http://www.bmadata.com/4.html"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; Directory Intelligence Services &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;and it should be available in some form within the next couple of months…. yes I know there are other products out there that do this (ILM / MIIS etc.) but these are all geared to Identity and Lifecycle Management and imho are a bit clunky and sometimes, ILM 2.0, require products you just don’t or may not have e.g. SQL 2005 / Exchange… plus there’s always room for competition… plus it’ll stop the brain from seizing… plus, well who cares it’s my life… so watch this space…&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-1855227656725856569?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/1855227656725856569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/directory-intelligence-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1855227656725856569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1855227656725856569'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/directory-intelligence-services.html' title='Directory Intelligence Services'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-8914734161053760992</id><published>2009-06-21T14:20:00.000-04:00</published><updated>2009-06-22T14:47:33.241-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Credentials'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>Create cached credentials without an interactive logon using runas or logonusera</title><content type='html'>&lt;span style="LINE-HEIGHT: 16px; COLOR: rgb(51,51,51)" class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Useful tidbit I used in a migration once upon a time…. you can create the cached credentials for a domain user by using runas.exe or coding with &lt;/span&gt;&lt;a style="COLOR: rgb(0,102,204); TEXT-DECORATION: none" title="LogonUser" href="http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;logonusera&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; in some code then you’ll be able to logon interactively as that user from ctrl+alt+del without the domain being avaialble at logon. This works as long as the machine’s domain is not changed. Changing the domain can change the cert / hashing using to hash and store the credentials in the registry and also can force the OS to clear all cached credentials. I’ve found this useful when migrating users where the VPN solution is only available after logon and not at the logon screen. Obviously if you can see the domain at the logon screen then it doesn’t matter… also if you want to create an admin back door, for use when a user is roaming for remote debugging and support, using a domain account and not a local account you can send the code to create the cached credentials and not have to logon interactivel&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-8914734161053760992?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/8914734161053760992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/create-cached-credentials-without.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8914734161053760992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8914734161053760992'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/create-cached-credentials-without.html' title='Create cached credentials without an interactive logon using runas or logonusera'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-6891422701728535890</id><published>2009-06-21T14:19:00.000-04:00</published><updated>2009-06-22T14:47:15.804-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kerberos'/><category scheme='http://www.blogger.com/atom/ns#' term='WMI'/><category scheme='http://www.blogger.com/atom/ns#' term='Events'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'></title><content type='html'>&lt;span style="LINE-HEIGHT: 16px; COLOR: rgb(51,51,51)font-family:'Lucida Grande';font-size:12;" class="Apple-style-span"  &gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span style="LINE-HEIGHT: 13px;font-family:Arial;" class="Apple-style-span" &gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Here’s a little collection that sets up some Event Consumers on bad logon events and will launch a script to take action on the event. It can be used to take action on logon attempts using cached credentials. If used with the Purge Tickets code it can clear a users kerberos tickets if an intruder logon attempt is detected while disconnected from a domain. Kinda overkill but it was an interesting exercise in understanding event consumers, kerberos tickets and logon providers….&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span style="LINE-HEIGHT: 15px;font-family:arial;" class="Apple-style-span" &gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;%SYSTEMROOT%\SYSTEM32\WBEM\MOFCOMP.EXE -N:root\default %SYSTEMROOT%\SYSTEM32\WBEM\scrcons.mof &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;%SYSTEMROOT%\SYSTEM32\WBEM\MOFCOMP.EXE “%HERE%\528SecEventTrig.mof”&lt;br /&gt;%SYSTEMROOT%\SYSTEM32\WBEM\MOFCOMP.EXE “%HERE%\529SecEventTrig.mof”&lt;br /&gt;%SYSTEMROOT%\SYSTEM32\WBEM\MOFCOMP.EXE “%HERE%\539SecEventTrig.mof”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;529SecEventTrig.mof:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;#pragma namespace (”\\\\.\\root\\subscription”) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of ActiveScriptEventConsumer as $Cons529&lt;br /&gt;{&lt;br /&gt;Name = “BadLogonConsumer”;&lt;br /&gt;ScriptingEngine = “VBScript”;&lt;br /&gt;ScriptFileName = “C:\\WINDOWS\\SYSTEM32\\DRIVERS\\HERACLES.VBS”;&lt;br /&gt;KillTimeout = 1;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of __EventFilter as $Filt529&lt;br /&gt;{&lt;br /&gt;Name = “BadLogonFilter”;&lt;br /&gt;Query = “SELECT * FROM __InstanceCreationEvent “&lt;br /&gt;“WHERE TargetInstance ISA \”Win32_NTLogEvent\” “&lt;br /&gt;“AND TargetInstance.LogFile = \”Security\” “&lt;br /&gt;“AND TargetInstance.SourceName = \”Security\” “&lt;br /&gt;“AND TargetInstance.EventCode = 529″;&lt;br /&gt;QueryLanguage = “WQL”;&lt;br /&gt;EventNamespace = “\\\\.\\root\\cimv2″;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of __FilterToConsumerBinding&lt;br /&gt;{&lt;br /&gt;Filter = $Filt529;&lt;br /&gt;Consumer = $Cons529;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;528SecEventtrig.mof:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;#pragma namespace (”\\\\.\\root\\subscription”) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of ActiveScriptEventConsumer as $Cons539&lt;br /&gt;{&lt;br /&gt;Name = “AccountLockedConsumer”;&lt;br /&gt;ScriptingEngine = “VBScript”;&lt;br /&gt;ScriptFileName = “C:\\WINDOWS\\SYSTEM32\\DRIVERS\\HERACLES.VBS”;&lt;br /&gt;KillTimeout = 1;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of __EventFilter as $Filt539&lt;br /&gt;{&lt;br /&gt;Name = “AccountLockedFilter”;&lt;br /&gt;Query = “SELECT * FROM __InstanceCreationEvent “&lt;br /&gt;“WHERE TargetInstance ISA \”Win32_NTLogEvent\” “&lt;br /&gt;“AND TargetInstance.LogFile = \”Security\” “&lt;br /&gt;“AND TargetInstance.SourceName = \”Security\” “&lt;br /&gt;“AND TargetInstance.EventCode = 539″;&lt;br /&gt;QueryLanguage = “WQL”;&lt;br /&gt;EventNamespace = “\\\\.\\root\\cimv2″;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of __FilterToConsumerBinding&lt;br /&gt;{&lt;br /&gt;Filter = $Filt539;&lt;br /&gt;Consumer = $Cons539;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;539SecEventTrig.mof:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;#pragma namespace (”\\\\.\\root\\subscription”) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of ActiveScriptEventConsumer as $Cons539&lt;br /&gt;{&lt;br /&gt;Name = “AccountLockedConsumer”;&lt;br /&gt;ScriptingEngine = “VBScript”;&lt;br /&gt;ScriptFileName = “C:\\WINDOWS\\SYSTEM32\\DRIVERS\\HERACLES.VBS”;&lt;br /&gt;KillTimeout = 1;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of __EventFilter as $Filt539&lt;br /&gt;{&lt;br /&gt;Name = “AccountLockedFilter”;&lt;br /&gt;Query = “SELECT * FROM __InstanceCreationEvent “&lt;br /&gt;“WHERE TargetInstance ISA \”Win32_NTLogEvent\” “&lt;br /&gt;“AND TargetInstance.LogFile = \”Security\” “&lt;br /&gt;“AND TargetInstance.SourceName = \”Security\” “&lt;br /&gt;“AND TargetInstance.EventCode = 539″;&lt;br /&gt;QueryLanguage = “WQL”;&lt;br /&gt;EventNamespace = “\\\\.\\root\\cimv2″;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;instance of __FilterToConsumerBinding&lt;br /&gt;{&lt;br /&gt;Filter = $Filt539;&lt;br /&gt;Consumer = $Cons539;&lt;br /&gt;}; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;HERACLES.VBS:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘&lt;br /&gt;‘Check logon type from TargetEvent.TargetInstance.Message – 11 CachedInteractive, 7 Unlock,&lt;br /&gt;‘Check the User name from TargetEvent.TargetInstance.Message against current interactive user&lt;br /&gt;‘Get lockout count from RSOP&lt;br /&gt;‘Increment consecutive failure count for user&lt;br /&gt;‘On a good logon check the lockout counter for the user and launch chimaera.exe to purge tickets and lock account&lt;br /&gt;‘ Constants:&lt;br /&gt;Const strComputer = “.”&lt;br /&gt;Const HKEY_LOCAL_MACHINE = &amp;amp;H80000002&lt;br /&gt;Const path = “C:\WINDOWS\SYSTEM32\DRIVERS”&lt;br /&gt;Dim strKeyPath : strKeyPath = “SYSTEM\CurrentControlSet\Control\MSReports” &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Quit if run without the TargetEvent passed from the ActiveScriptEventConsumer&lt;br /&gt;If (Not IsObject(TargetEvent)) Then WScript.Quit &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Quit if Server&lt;br /&gt;Dim objWMIService : Set objWMIService = GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” _&lt;br /&gt;&amp;amp; strComputer &amp;amp; “\root\CIMV2″)&lt;br /&gt;Dim colItem :Set colItems = objWMIService.ExecQuery(”Select * From Win32_OperatingSystem”)&lt;br /&gt;Dim objItem&lt;br /&gt;For each objItem in colItems&lt;br /&gt;if (instr(UCase(objItem.Caption),”SERVER”) &gt; 0) then Wscript.Quit&lt;br /&gt;Next&lt;br /&gt;Set colItem = Nothing&lt;br /&gt;Set objWMIService = Nothing &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Dim objReg : Set objReg=GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” _&lt;br /&gt;&amp;amp; strComputer &amp;amp; “\root\default:StdRegProv”) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Run routine based on Event Code&lt;br /&gt;Select Case TargetEvent.TargetInstance.EventCode&lt;br /&gt;Case 528&lt;br /&gt;Call GoodLogonEvent&lt;br /&gt;Case 529&lt;br /&gt;Call BadLogonEvent&lt;br /&gt;Case 4201&lt;br /&gt;Call TCPIPEvent&lt;br /&gt;Case 539&lt;br /&gt;Call AccountLockedEvent&lt;br /&gt;End Select&lt;br /&gt;Wscript.Quit &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sub GoodLogonEvent&lt;br /&gt;On Error Resume Next&lt;br /&gt;‘Quit if Network Service or SYSTEM&lt;br /&gt;If InStr(UCase(TargetEvent.TargetInstance.Message),”NETWORK SERVICE”) &gt; 0 Then WScript.Quit&lt;br /&gt;If InStr(UCase(TargetEvent.TargetInstance.Message),”SYSTEM”) &gt; 0 Then WScript.Quit &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Dim arrMessage, arrUserName, objWMIService, objProcess, test&lt;br /&gt;Dim strUserName, intLockout, errReturn, strValueName, strLogonGUID, arrLogonGUID &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Parse message for required information&lt;br /&gt;arrMessage = Split(TargetEvent.TargetInstance.Message,vbCrLf) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;If IsArray(arrMessage) Then&lt;br /&gt;arrUserName = Split(arrMessage(2),vbTab)&lt;br /&gt;If IsArray(arrUserName) then&lt;br /&gt;strUserName = arrUserName(2)&lt;br /&gt;End If&lt;br /&gt;arrLogonDomainName = Split(arrMessage(4),vbTab)&lt;br /&gt;If IsArray(arrLogonDomainName) Then&lt;br /&gt;strLogonDomainName = arrLogonDomainName(3)&lt;br /&gt;End If&lt;br /&gt;arrLogonComputerName = Split(arrMessage(14),vbTab)&lt;br /&gt;If IsArray(arrLogonComputerName) Then&lt;br /&gt;strLogonComputerName = arrLogonComputerName(UBound(arrLogonComputerName))&lt;br /&gt;End If&lt;br /&gt;arrLogonType = Split(arrMessage(8),vbTab)&lt;br /&gt;If IsArray(arrLogonType) Then&lt;br /&gt;intLogonType = arrLogonType(UBound(arrLogonType))&lt;br /&gt;End If&lt;br /&gt;arrLogonGUID = Split(arrMessage(16),vbTab)&lt;br /&gt;If IsArray(arrLogonGUID) Then&lt;br /&gt;strLogonGUID = arrLogonGUID(2)&lt;br /&gt;End if&lt;br /&gt;Else&lt;br /&gt;WScript.Quit&lt;br /&gt;End If &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Set initial lockout counter&lt;br /&gt;intLockout = &amp;amp;H0 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Create user key, if not exist&lt;br /&gt;strKeyPath = strKeyPath &amp;amp; “\” &amp;amp; strUserName&lt;br /&gt;errReturn = objReg.CreateKey(HKEY_LOCAL_MACHINE,strKeyPath)&lt;br /&gt;‘Read lockout trigger information&lt;br /&gt;strValueName = strUserName &amp;amp; “-Lockout”&lt;br /&gt;errReturn = objReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intLockout)&lt;br /&gt;If errReturn &lt;&gt; 0 Then&lt;br /&gt;‘Lockout trigger not set so delete user key&lt;br /&gt;objReg.DeleteKey HKEY_LOCAL_MACHINE,strKeyPath ‘,strValueName&lt;br /&gt;Else&lt;br /&gt;‘Lockout trigger set so launch chimaera.exe if it is not already running&lt;br /&gt;Set objWMIService = GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” _&lt;br /&gt;&amp;amp; strComputer &amp;amp; “\root\CIMV2″)&lt;br /&gt;Set objProcess = objWMIService.Get(”win32_Process”)&lt;br /&gt;Set colProcesses = objWMIService.ExecQuery(”SELECT * FROM Win32_Process WHERE Name LIKE ‘%CHIMAERA.EXE%’”)&lt;br /&gt;if colProcesses.Count = 0 then&lt;br /&gt;‘errReturn = objProcess.Create(path &amp;amp; “\HYDRA.EXE /DOMAIN=” &amp;amp; strLogonDomainName &amp;amp; ” /USERID=” &amp;amp; strUserName, Null, Null, intProcessID)&lt;br /&gt;‘Chimaera.exe not running so launch it to purge tickets and lock acocunt&lt;br /&gt;errReturn = objProcess.Create(path &amp;amp; “\CHIMAERA.EXE /LOCK /DOMAIN=” &amp;amp; strLogonDomainName &amp;amp; ” /USERID=” &amp;amp; strUserName, Null, Null, intProcessID)&lt;br /&gt;strValueName = strUserName &amp;amp; “-PurgeTktsErrReturn”&lt;br /&gt;if errReturn = 1 then test = &amp;amp;H1 Else test = &amp;amp;H0&lt;br /&gt;objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,test&lt;br /&gt;End if&lt;br /&gt;Set objWMIService = Nothing&lt;br /&gt;Set objProcess = Nothing &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;End If&lt;br /&gt;Set objReg = Nothing&lt;br /&gt;WScript.quit&lt;br /&gt;End Sub &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sub BadLogonEvent&lt;br /&gt;On Error Resume Next&lt;br /&gt;Dim objreg, arrMessage, arrUserName, objWMIService, objProcess, colItems, objItems, test&lt;br /&gt;Dim strUserName, intLockout, errReturn, strValueName, intLockoutBadCount, intBadLogonCount&lt;br /&gt;Dim arrLogonDomainName, strLogonDomainName, strComputerName, arrLogonType&lt;br /&gt;Dim intLogonType, arrLogonComputerName, strLogonComputerName &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;IntLockoutBadCount = 5&lt;br /&gt;strComputerName = TargetEvent.TargetInstance.ComputerName&lt;br /&gt;‘Parse message for required information&lt;br /&gt;strUserName = “ERROR”&lt;br /&gt;arrMessage = Split(TargetEvent.TargetInstance.Message,vbCrLf)&lt;br /&gt;If IsArray(arrMessage) Then&lt;br /&gt;arrUserName = Split(arrMessage(4),vbTab)&lt;br /&gt;If IsArray(arrUserName) then&lt;br /&gt;strUserName = arrUserName(2)&lt;br /&gt;End If&lt;br /&gt;arrLogonDomainName = Split(arrMessage(6),vbTab)&lt;br /&gt;If IsArray(arrLogonDomainName) Then&lt;br /&gt;strLogonDomainName = arrLogonDomainName(3)&lt;br /&gt;End If&lt;br /&gt;arrLogonComputerName = Split(arrMessage(14),vbTab)&lt;br /&gt;If IsArray(arrLogonComputerName) Then&lt;br /&gt;strLogonComputerName = arrLogonComputerName(UBound(arrLogonComputerName))&lt;br /&gt;End If&lt;br /&gt;arrLogonType = Split(arrMessage(8),vbTab)&lt;br /&gt;If IsArray(arrLogonType) Then&lt;br /&gt;intLogonType = arrLogonType(UBound(arrLogonType))&lt;br /&gt;End If&lt;br /&gt;Else&lt;br /&gt;WScript.Quit&lt;br /&gt;End If &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘If local logon exit&lt;br /&gt;If UCase(strLogonDomainName) = UCase(strComputerName) Then WScript.Quit&lt;br /&gt;If UCase(strLogonComputerName) &lt;&gt; UCase(strComputerName) Then WScript.Quit &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;strKeyPath = strKeyPath &amp;amp; “\” &amp;amp; strUserName &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Set objReg=GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” _&lt;br /&gt;&amp;amp; strComputer &amp;amp; “\root\default:StdRegProv”) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Create user key if not exist and write data from message&lt;br /&gt;errReturn = objReg.CreateKey(HKEY_LOCAL_MACHINE,strKeyPath)&lt;br /&gt;errReturn = objReg.SetStringValue(HKEY_LOCAL_MACHINE,strKeyPath,”strLogonComputerName”,strLogonComputerName)&lt;br /&gt;errReturn = objReg.SetStringValue(HKEY_LOCAL_MACHINE,strKeyPath,”strLogonDomainName”,strLogonDomainName)&lt;br /&gt;errReturn = objReg.SetStringValue(HKEY_LOCAL_MACHINE,strKeyPath,”strUserName”,strUserName)&lt;br /&gt;errReturn = objReg.SetStringValue(HKEY_LOCAL_MACHINE,strKeyPath,”strLogonType”,intLogonType)&lt;br /&gt;errReturn = objReg.SetStringValue(HKEY_LOCAL_MACHINE,strKeyPath,”strComputerName”,strComputerName) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘ ‘XP records logontype 11 first even if on the network so if logontype is 2 the reduce the counter by 1&lt;br /&gt;‘ If (intLogonType = 2) Then&lt;br /&gt;‘ strValueName = strUserName &amp;amp; “-BadLogonCount”&lt;br /&gt;‘ errReturn = objReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intBadLogonCount)&lt;br /&gt;‘ If errReturn &lt;&gt; 0 Then&lt;br /&gt;‘ intBadLogonCount = 0&lt;br /&gt;‘ Else&lt;br /&gt;‘ intBadLogonCount = intBadLogonCount – 1&lt;br /&gt;‘ objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intBadLogonCount&lt;br /&gt;‘ End If&lt;br /&gt;‘ End if &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘ End if&lt;br /&gt;‘Write and increment bad logon counter if unlock or cached&lt;br /&gt;‘If not unlock or cached logon quit&lt;br /&gt;If (intLogonType = 7) Or (intLogonType = 11) Then&lt;br /&gt;strValueName = strUserName &amp;amp; “-BadLogonCount”&lt;br /&gt;errReturn = objReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intBadLogonCount)&lt;br /&gt;If errReturn &lt;&gt; 0 Then&lt;br /&gt;intBadLogonCount = 1&lt;br /&gt;Else&lt;br /&gt;intBadLogonCount = intBadLogonCount + 1&lt;br /&gt;End If&lt;br /&gt;objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intBadLogonCount &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Read Account lockout threshold from RSOP&lt;br /&gt;Set objWMIRSOPService = GetObject(”winmgmts:\\” &amp;amp; strComputer &amp;amp; “\root\rsop\computer”)&lt;br /&gt;Set colItems = objWMIRSOPService.ExecQuery(”Select * from RSOP_SecuritySettingNumeric”)&lt;br /&gt;For Each objItem in colItems&lt;br /&gt;If objItem.KeyName = “LockoutBadCount” Then&lt;br /&gt;intLockoutBadCount = objItem.Setting&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;Set ColItems = Nothing&lt;br /&gt;Set objWMIRSOPService = Nothing &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Write trigger if bad logon counter higher than threshold and purge user’s ticket cache&lt;br /&gt;If (intBadLogonCount =&gt; intLockoutBadCount) Then&lt;br /&gt;intLockout = 1&lt;br /&gt;strValueName = strUserName &amp;amp; “-Lockout”&lt;br /&gt;objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intLockout &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Set objWMIService = GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” _&lt;br /&gt;&amp;amp; strComputer &amp;amp; “\root\CIMV2″)&lt;br /&gt;Set objProcess = objWMIService.Get(”win32_Process”)&lt;br /&gt;Set colProcesses = objWMIService.ExecQuery(”SELECT * FROM Win32_Process WHERE Name LIKE ‘%CHIMAERA.EXE%’”)&lt;br /&gt;if colProcesses.Count = 0 then&lt;br /&gt;‘errReturn = objProcess.Create(path &amp;amp; “\HYDRA.EXE /DOMAIN=” &amp;amp; strLogonDomainName &amp;amp; _&lt;br /&gt;‘ ” /USERID=” &amp;amp; strUserName, Null, Null, intProcessID)&lt;br /&gt;’strValueName = strUserName &amp;amp; “-PopupErrReturn”&lt;br /&gt;‘if errReturn = 1 then test = &amp;amp;H1 Else test = &amp;amp;H0&lt;br /&gt;‘objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,test &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;errReturn = objProcess.Create(path &amp;amp; “\CHIMAERA.EXE /DOMAIN=” &amp;amp; strLogonDomainName &amp;amp; ” /USERID=” &amp;amp; strUserName, Null, Null, intProcessID)&lt;br /&gt;strValueName = strUserName &amp;amp; “-PurgeTktsErrReturn”&lt;br /&gt;if errReturn = 1 then test = &amp;amp;H1 Else test = &amp;amp;H0&lt;br /&gt;objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,test&lt;br /&gt;End if&lt;br /&gt;Set objWMIService = Nothing&lt;br /&gt;Set objProcess = Nothing &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;End If&lt;br /&gt;Set objReg = Nothing&lt;br /&gt;End if&lt;br /&gt;WScript.Quit&lt;br /&gt;End Sub &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sub TCPIPEvent&lt;br /&gt;WScript.quit&lt;br /&gt;End Sub &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sub AccountLockedEvent&lt;br /&gt;On Error Resume Next&lt;br /&gt;If InStr(UCase(TargetEvent.TargetInstance.Message),”NETWORK SERVICE”) &gt; 0 Then WScript.Quit&lt;br /&gt;If InStr(UCase(TargetEvent.TargetInstance.Message),”SYSTEM”) &gt; 0 Then WScript.Quit&lt;br /&gt;Dim objreg, arrMessage, arrUserName, objWMIService, objProcess, test&lt;br /&gt;Dim strUserName, intLockout, errReturn, strValueName&lt;br /&gt;Dim objStartup, objConfig &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Parse message for required information&lt;br /&gt;arrMessage = Split(TargetEvent.TargetInstance.Message,vbCrLf)&lt;br /&gt;If IsArray(arrMessage) Then&lt;br /&gt;arrUserName = Split(arrMessage(4),vbTab) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;If IsArray(arrUserName) then &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;strUserName = arrUserName(2)&lt;br /&gt;‘As domain account is locked delete user’s counter key&lt;br /&gt;strKeyPath = strKeyPath &amp;amp; “\” &amp;amp; strUserName&lt;br /&gt;Set objReg=GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” &amp;amp; strComputer &amp;amp; “\root\default:StdRegProv”)&lt;br /&gt;errReturn = objReg.DeleteKey(HKEY_LOCAL_MACHINE,strKeyPath)&lt;br /&gt;Set objReg = Nothing &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Launch CHIMAERA.EXE and purge user’s ticket cache&lt;br /&gt;Set objWMIService = GetObject(”winmgmts:{impersonationLevel=impersonate}!\\” _&lt;br /&gt;&amp;amp; strComputer &amp;amp; “\root\CIMV2″)&lt;br /&gt;Set objProcess = objWMIService.Get(”win32_Process”)&lt;br /&gt;Set colProcesses = objWMIService.ExecQuery(”SELECT * FROM Win32_Process WHERE Name LIKE ‘%CHIMAERA.EXE%’”)&lt;br /&gt;if colProcesses.Count = 0 then&lt;br /&gt;errReturn = objProcess.Create(path &amp;amp; “\CHIMAERA.EXE /USERID=” &amp;amp; strUserName, Null, Null, intProcessID)&lt;br /&gt;end if&lt;br /&gt;Set objWMIService = Nothing&lt;br /&gt;Set objProcess = Nothing &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;End If&lt;br /&gt;Else&lt;br /&gt;WScript.Quit&lt;br /&gt;End If &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Wscript.Quit &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;End Sub &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘ errReturn = objProcess.Create(”c:\windows\system32\rundll32.exe user32.dll, LockWorkStation”, Null, Null, intProcessID)&lt;br /&gt;‘ strValueName = strUserName &amp;amp; “-LockErrReturn”&lt;br /&gt;‘ if errReturn = 1 then test = &amp;amp;H1 Else test = &amp;amp;H0&lt;br /&gt;‘ objReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,test &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;‘Dim i&lt;br /&gt;‘For i = 0 To UBound(arrMessage)’ thing In arrMessage&lt;br /&gt;‘If arrMessage &lt;&gt; “” then errReturn = objReg.SetDWORDValue(HKEY_LOCAL_MACHINE,strKeyPath,arrMessage(i),i)&lt;br /&gt;‘errReturn = objReg.GetDWORDValue(HKEY_LOCAL_MACHINE,strKeyPath,strValueName,intBadLogonCount)&lt;br /&gt;‘Next&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-6891422701728535890?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brianhehir.blogspot.com/feeds/6891422701728535890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brianhehir.blogspot.com/2009/06/heres-little-collection-that-sets-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/6891422701728535890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/6891422701728535890'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/heres-little-collection-that-sets-up.html' title=''/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-8164506535125720210</id><published>2009-06-19T14:28:00.002-04:00</published><updated>2009-06-22T14:51:53.165-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technologist'/><category scheme='http://www.blogger.com/atom/ns#' term='Resume'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Brian Hehir – Technologist</title><content type='html'>&lt;span style="LINE-HEIGHT: 16px;font-size:12;" class="Apple-style-span" &gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Brian Hehir is the lead technologist and principal consultant at HHS International Ltd, part of the BMA Data group a full service IT Consulting company based in New York and Hoboken. Brian enables engineered competitive advantage through structured systems design while developing reusable patterns based system tools for deployment, management and migration; always beating SLAs through his proven skills in complex problem solving.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Brian Hehir has been developing and working with Information Technology and computing systems for over 30 years, from Micros, Minis, Unix, Xenix to Novell, Linux and Windows. Brian’s core skills include&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; engineering reusable bespoke enterprise tools and solutions, as well as augmenting third-party solutions, for large scale organizations with many tens of thousands of global users in a mixed operating environment. Brian has a proven ability to diagnose, isolate and resolve complex application and network issues, down to the packet level, in mission critical real time applications.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;With over 15 years proven industry experience, 12 of which consulting to the world’s largest Investment Banks there is no project too complex or business critical, no technology too sophisticated, environment too exacting or invoice too large for Brian Hehir’s unique abilities and comprehensive experience. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Please review Brian’s resume for details of his experience. Email Brian Hehir: &lt;/span&gt;&lt;/span&gt;&lt;a style="FONT-STYLE: normal; COLOR: rgb(92,92,92); FONT-WEIGHT: normal; TEXT-DECORATION: underline" title="email me on this address" href="mailto:websitecontact@brianhehir.com"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;websitecontact@brianhehir.com&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2; FONT-STYLE: normal; MARGIN: 5px 0px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: rgb(40,40,40); FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px"&gt;&lt;em&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;“One machine can do the work of 50 ordinary men. No machine can do the work of one extraordinary man."— Elbert Hubbard&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-8164506535125720210?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8164506535125720210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/8164506535125720210'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/brian-hehir-technologist_22.html' title='Brian Hehir – Technologist'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-151010215218867086</id><published>2009-06-19T12:24:00.001-04:00</published><updated>2009-06-22T14:50:07.071-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Brian Hehir'/><category scheme='http://www.blogger.com/atom/ns#' term='Resume'/><category scheme='http://www.blogger.com/atom/ns#' term='CV'/><title type='text'>Brian Hehir – Resume</title><content type='html'>&lt;a href="http://www.brianhehir.com/cv.html"&gt;View My Resume&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-151010215218867086?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/151010215218867086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/151010215218867086'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/brian-hehir-resume.html' title='Brian Hehir – Resume'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6233128224633539222.post-1598911493747499469</id><published>2009-06-02T12:16:00.000-04:00</published><updated>2009-06-22T14:46:06.100-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Brian Hehir - Technologist</title><content type='html'>&lt;span style="LINE-HEIGHT: 16px;font-size:12;" class="Apple-style-span" &gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Thought I’d start a blog and randomly doodle down some stuff I find interesting or tricky…&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6233128224633539222-1598911493747499469?l=brianhehir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1598911493747499469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6233128224633539222/posts/default/1598911493747499469'/><link rel='alternate' type='text/html' href='http://brianhehir.blogspot.com/2009/06/brian-hehir-technologist.html' title='Brian Hehir - Technologist'/><author><name>Brian P Hehir</name><uri>http://www.blogger.com/profile/14497419959509108196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_zaLZ0547qRY/Sj-xTgNlLUI/AAAAAAAAAHE/4q_y_5RM3N0/S220/me.jpg'/></author></entry></feed>
