<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>derekf's blog</title>
        <link>http://geekswithblogs.net/derekf/Default.aspx</link>
        <description>On C#, repackaging applications, and deploying via group policy...</description>
        <language>en-US</language>
        <copyright>derekf</copyright>
        <managingEditor>derekf@derekf.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>derekf's blog</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/derekf/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>RootDSE without WINS</title>
            <link>http://geekswithblogs.net/derekf/archive/2008/08/11/124354.aspx</link>
            <description>&lt;p&gt;We're removing WINS from our environment.  Don't ask me why, I'm not a big fan of the idea... but they don't pay me to make decisions, they pay me to make things work.&lt;/p&gt;
&lt;p&gt;Things work fine without WINS, once you've joined the domain, DNS takes it all over and everything works.&lt;/p&gt;
&lt;p&gt;However, we have a utility that does most of those tasks needed to join a machine to the domain -- creates an INI file used to create the machine account, renames the machine to meet our standards, and does the join (among other things).  The person joining the domain specifies their username, password, and their user domain.&lt;/p&gt;
&lt;p&gt;At pilot sites where WINS is no longer available, the app started failing.  Research found it was the call to LDAP to try to find the RootDSE.  To reproduce, set your primary and secondary WINS addys to be an invalid IP.  Adding company.com as a DNS suffix makes it work, but apparently the networking folks don't want to add a suffix to the DHCP configuration.&lt;/p&gt;
&lt;p&gt;If we go with something along the lines of&lt;/p&gt;
&lt;pre&gt;&lt;font color="#0000ff"&gt;DirectoryEntry&lt;/font&gt; rootEntry = &lt;font color="#0000ff"&gt;new DirectoryEntry&lt;/font&gt;(&lt;a href="ldap://domain/RootDSE"&gt;&lt;font color="#ff0000"&gt;LDAP://domain/RootDSE&lt;/font&gt;&lt;/a&gt;);&lt;/pre&gt;
&lt;p&gt;&lt;font size="2"&gt;it fails with "The server is not operational"&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;However, specifying the FQDN works:&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;&lt;font color="#0000ff"&gt;DirectoryEntry&lt;/font&gt; rootEntry = &lt;font color="#0000ff"&gt;new DirectoryEntry&lt;/font&gt;(&lt;a href="ldap://domain.company.com/RootDSE"&gt;&lt;font color="#ff0000"&gt;LDAP://domain.company.com/RootDSE&lt;/font&gt;&lt;/a&gt;);&lt;/pre&gt;
&lt;p&gt;So, hopefully this will help someone, although if you're more of a networking guy than me it was probably obvious all along.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124354"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124354" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/124354.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2008/08/11/124354.aspx</guid>
            <pubDate>Mon, 11 Aug 2008 13:31:32 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/124354.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2008/08/11/124354.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/124354.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/124354.aspx</trackback:ping>
        </item>
        <item>
            <title>Apps Expire from Local Cache, part 2</title>
            <link>http://geekswithblogs.net/derekf/archive/2008/07/24/123991.aspx</link>
            <description>&lt;p&gt;Even though I'm no longer involved with group policy, I'm still the go-to guy for issues.&lt;/p&gt;
&lt;p&gt;Got a call this morning from a helpdesk guy who was working an issue with Add New Programs not populating.  He'd dug through RSOP and found that two apps had failed to remove. (More specifically, RSOP showed the yellow bang on User Configuration/Software Settings/Software installation, with these two listed as "Removed Applications").  The details for these two apps specified "&lt;strong&gt;The removal of xxx from policy yyy failed.  The error was : The installation source for this product is not available.  Verify that the source exists and that you can access it&lt;/strong&gt;"&lt;/p&gt;
&lt;p&gt;A little digging found that both of these apps had been removed from policy with the "Immediately Uninstall" option months ago, and somewhere along the way the app folder was removed from the local servers.  One of the apps had the folder contents available; simply replacing it on the local server was sufficient to allow the uninstall to complete.&lt;/p&gt;
&lt;p&gt;For the other app, the source no longer exists.  Most users were able to uninstall with the local cached copy, but this user no longer had that MSI.  Helpdesk will be using MSIZAP to get rid of the registry entries for this app so the user can install the newer revision of this app.&lt;/p&gt;
&lt;p&gt;Not sure how long the user has been having trouble.  The lesson to be learned here is to not be in such a hurry to remove the source from the local servers; users may need it for a while after if you've removed it from policy with "Immediately Uninstall", or if you're going to ever push out an app as an upgrade to this one.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123991"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=123991" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/123991.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2008/07/24/123991.aspx</guid>
            <pubDate>Thu, 24 Jul 2008 12:49:06 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/123991.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2008/07/24/123991.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/123991.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/123991.aspx</trackback:ping>
        </item>
        <item>
            <title>Change of duties</title>
            <link>http://geekswithblogs.net/derekf/archive/2008/05/12/122079.aspx</link>
            <description>&lt;p&gt;The Powers That Be have decreed that the work I've been doing with group policy will be transitioned to another group, so I won't be involved with that anymore.&lt;/p&gt;
&lt;p&gt;Since I won't have any things I've found with GP anymore, I guess future posts will involve my other two roles: application packaging and being the junior coder... along with those things I learn in my endeavor to become a not-so-junior programmer -- I've got lots to learn in C#, plus a whole lot of C++ to learn (both native and managed).  Should be fun.&lt;/p&gt;
&lt;p&gt;Additionally, I'm a full time college student as well.  There may be some interesting things I find there (or if future semesters are anything like the last one, postings may be sporadic while I scramble to keep on top of my classes)&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122079"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122079" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/122079.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2008/05/12/122079.aspx</guid>
            <pubDate>Mon, 12 May 2008 15:02:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/122079.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2008/05/12/122079.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/122079.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/122079.aspx</trackback:ping>
        </item>
        <item>
            <title>What GPOs applied to this machine?</title>
            <link>http://geekswithblogs.net/derekf/archive/2008/01/04/118239.aspx</link>
            <description>&lt;div&gt;I was asked earlier today to come up with a list of what GPOs applied to a given box.  Simple enough given the code from one of the previous posts to ask AD what GPOs apply to the machine's OU, but I'm not convinced there's more to it than that.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Senior coder had started going through GetGPOList(), FreeGPOList(), and GetAppliedGPOList() but they didn't really play well in C# from an interop standpoint.  I'll likely give them a try at a later time.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Instead, today I went looking through the registry and came across &lt;font face="Arial"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\GPLink-List -- hey look, Windows keeps track of what GPOs apply, and unlike the "Machine OU" option I mentioned above, it also deals with inheritance.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The task seems pretty clear: Go through the subkeys of the GPLink-List key, and translate the DsPath entry from a GUID to a name.  &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt; &lt;span style="COLOR: #010001"&gt;GetListOfGPOs&lt;/span&gt;()&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt; &lt;span style="COLOR: #010001"&gt;GPOList&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;Keyname&lt;/span&gt; = &lt;span style="COLOR: #a31515"&gt;@"SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\GPLink-List"&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: #2b91af"&gt;RegistryKey&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;rk&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;Registry&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;LocalMachine&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;OpenSubKey&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;Keyname&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: blue"&gt;string&lt;/span&gt;[] &lt;span style="COLOR: #010001"&gt;keys&lt;/span&gt; = &lt;span style="COLOR: #010001"&gt;rk&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetSubKeyNames&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: blue"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;GPOKey&lt;/span&gt; &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;keys&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: #2b91af"&gt;RegistryKey&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;theKey&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;Registry&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;LocalMachine&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;OpenSubKey&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;Keyname&lt;/span&gt; + &lt;span style="COLOR: #a31515"&gt;"\\"&lt;/span&gt; + &lt;span style="COLOR: #010001"&gt;GPOKey&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;Value&lt;/span&gt; = &lt;span style="COLOR: #010001"&gt;theKey&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetValue&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"DSPath"&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;""&lt;/span&gt;).&lt;span style="COLOR: #010001"&gt;ToString&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #010001"&gt;Value&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Contains&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"cn="&lt;/span&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                    &lt;span style="COLOR: #010001"&gt;GPOList&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Add&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;TranslateFromGUIDToName&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;Value&lt;/span&gt;));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                    &lt;span style="COLOR: #010001"&gt;GPOList&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Add&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;Value&lt;/span&gt;); &lt;span style="COLOR: green"&gt;// Special case: "LocalGPO"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;GPOList&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div&gt; and of course, we need a function to translate the GUID (actually the entire path) to the policy name.  You might want additional info as well, all we were looking for was the name.  Adjust the Properties you're looking for to suit:&lt;/div&gt;
&lt;p&gt;   &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;TranslateFromGUIDToName&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;path&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: blue"&gt;using&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;DirectorySearcher&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DirectorySearcher&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DirectoryEntry&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"LDAP://"&lt;/span&gt; + &lt;span style="COLOR: #010001"&gt;path&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;AuthenticationTypes&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Secure&lt;/span&gt;)))&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;ClientTimeout&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TimeSpan&lt;/span&gt;(0, 0, 10);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;SearchScope&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;SearchScope&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Subtree&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                    &lt;span style="COLOR: #2b91af"&gt;SearchResult&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;result&lt;/span&gt; = &lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;FindOne&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                    &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #010001"&gt;result&lt;/span&gt; != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                    {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                        &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #010001"&gt;result&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Properties&lt;/span&gt;[&lt;span style="COLOR: #a31515"&gt;"displayName"&lt;/span&gt;][0] != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                        {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                            &lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Dispose&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;result&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Properties&lt;/span&gt;[&lt;span style="COLOR: #a31515"&gt;"displayName"&lt;/span&gt;][0].&lt;span style="COLOR: #010001"&gt;ToString&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                        }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                    }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                &lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;Exception&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;ex&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                {&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                    &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;ex&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Message&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;                }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Not found."&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;        }&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;font face="Arial"&gt;So there you have it.  Not all that useful -- just giving the names of the policies that applied, but it's a start.&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118239"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118239" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/118239.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2008/01/04/118239.aspx</guid>
            <pubDate>Fri, 04 Jan 2008 14:33:26 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/118239.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2008/01/04/118239.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/118239.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/118239.aspx</trackback:ping>
        </item>
        <item>
            <title>Error when publishing apps in GPO:</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/12/28/118035.aspx</link>
            <description>&lt;p&gt;We got an error yesterday that I'd not seen before, when publishing two separate packages.  Both of them were created by Visual Studio 2008 instead of our typical Wise/InstallShield packages.&lt;/p&gt;
&lt;p&gt;The error was "No package in the software installation data in the Active Directory meets this criteria.".  &lt;/p&gt;
&lt;p&gt;A web search found nothing useful on this error; I'd started digging into it to maybe be the first to provide something on it -- but during troubleshooting both packages were published without error.  MSI logging wasn't on, so I've got insufficient details to give any theory.  So.. if you get this error, I guess try again later.  &lt;/p&gt;
&lt;p&gt;Anybody got a better answer?  I'm still curious about the cause of the error.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118035"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118035" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/118035.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/12/28/118035.aspx</guid>
            <pubDate>Fri, 28 Dec 2007 16:47:30 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/118035.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/12/28/118035.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/118035.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/118035.aspx</trackback:ping>
        </item>
        <item>
            <title>Apps Expire from local MSI cache</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/12/10/117553.aspx</link>
            <description>&lt;p&gt;I've had this post rattling around in my head for a few months now, but I've never had enough hard data to really flesh it out as well as I'd liked.&lt;/p&gt;
&lt;p&gt;I still don't, but I need to get this down on paper.&lt;/p&gt;
&lt;p&gt;Apps deployed via Group Policy expire from the local cache.  This can be a problem if the app is removed from the servers, or if you make changes to an existing app that would make its MSI not match the installation (Product/Package code changes, etc).&lt;/p&gt;
&lt;p&gt;I don't have the details as to why - whether it's the oldest that gets purged, or least commonly used, or largest; whenever the problem has been seen here, it gets fixed first and the why gets worried about later.  I'd hoped that the next batch would last long enough for me to dig out the details but no such luck.&lt;/p&gt;
&lt;p&gt;Want to reproduce the problem?  Simple:  &lt;/p&gt;
&lt;p&gt;1.  Publish an app via Group Policy.  Let thousands of people install it.&lt;/p&gt;
&lt;p&gt;2.  Let it sit for a while (like I said: I don't have the details as to what causes it to expire)&lt;/p&gt;
&lt;p&gt;3.  Change the product code in the MSI on the server.&lt;/p&gt;
&lt;p&gt;4.  Try to uninstall the package on the client.  MSI not found, tries to recache from the network, not found there either.&lt;/p&gt;
&lt;p&gt;Ran this past a coworker who is an MSI guru; he ran it past his folks and nobody had heard of MSIs not staying in the local cache.  It is entirely possible that it's something specific to our implementation (a policy setting?).  It seems to manifest itself as the same old "Installation Source cannot be found" message when users attempt to repair, uninstall, or upgrade an app.&lt;/p&gt;
&lt;p&gt;Have you seen this?  Do you know anything more about it?&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117553"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117553" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/117553.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/12/10/117553.aspx</guid>
            <pubDate>Mon, 10 Dec 2007 19:22:37 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/117553.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/12/10/117553.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/117553.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/117553.aspx</trackback:ping>
        </item>
        <item>
            <title>Cleanup </title>
            <link>http://geekswithblogs.net/derekf/archive/2007/10/01/115742.aspx</link>
            <description>&lt;p&gt;Back to the basic apps I started with.&lt;/p&gt;
&lt;p&gt;There were a couple of locations where the output was "System.Byte[]" or "System.Object[]".  &lt;/p&gt;
&lt;p&gt;System.Object[] appears to happen in "msifilelist", and only on those apps that have a transform.&lt;/p&gt;
&lt;p&gt;Given that you're loading everything into a DataRow, code like this will separate out the transform if one exists:&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;foreach&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; (&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;a&lt;/span&gt; &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;myDirectoryEntry&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Properties&lt;/span&gt;[&lt;span style="COLOR: #a31515"&gt;"msifilelist"&lt;/span&gt;])&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;if&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; (&lt;span style="COLOR: #020002"&gt;a&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;ToString&lt;/span&gt;().&lt;span style="COLOR: #020002"&gt;ToLower&lt;/span&gt;().&lt;span style="COLOR: #020002"&gt;EndsWith&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;".mst"&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #020002; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;dr&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;[&lt;span style="COLOR: #a31515"&gt;"Transforms"&lt;/span&gt;] = &lt;span style="COLOR: #020002"&gt;a&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;ToString&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #020002; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;dr&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;[&lt;span style="COLOR: #a31515"&gt;"msifilelist"&lt;/span&gt;] += &lt;span style="COLOR: #020002"&gt;a&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;ToString&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The System.Byte[] is a bit more complex.&lt;/p&gt;
&lt;p&gt;In a similar way, &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;foreach&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; (&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;a&lt;/span&gt; &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;myDirectoryEntry&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Properties&lt;/span&gt;[&lt;span style="COLOR: #a31515"&gt;"productcode"&lt;/span&gt;])&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;works to get the bytes out of the ProductCode property, but the object contains an array.  You can't access the contents of an array from within an object -- a[1] isn't valid, and none of the casts I tried worked.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;Found &lt;a href="http://www.codeproject.com/Purgatory/ObjectByteArrayConverter.asp"&gt;some code online&lt;/a&gt; to convert an object to an array of bytes.  It works, to an extent, but there's quite a bit of extra stuff tacked on to both the beginning and the end of the array.  I don't know why - it's got to come from something in that function, but I can't tell where.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;Simple enough to loop through and clean it up:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span&gt;
&lt;div style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;StringBuilder&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: #020002"&gt;sb&lt;/span&gt; = &lt;span style="COLOR: #020002"&gt;StringBuilder&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;byte&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;[] &lt;span style="COLOR: #020002"&gt;code&lt;/span&gt; = &lt;span style="COLOR: #020002"&gt;ObjectToByteArray&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;a&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;int&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: #020002"&gt;i&lt;/span&gt; = 0;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;foreach&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; (&lt;span style="COLOR: blue"&gt;byte&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;b&lt;/span&gt; &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;code&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;if&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; (&lt;span style="COLOR: #020002"&gt;i&lt;/span&gt;++ &amp;gt;= 27)&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #020002"&gt;sb&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;b&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;ToString&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"X2"&lt;/span&gt;));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;string&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt; = &lt;span style="COLOR: #020002"&gt;ToString&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;However, the GUID as returned from AD doesn't match what it should.  Not only is this just an array of bytes, but the dashes are missing and the bytes in the first three sections are in a jumbled order.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;One would have thought that &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af"&gt;Guid&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; &lt;span style="COLOR: #020002"&gt;g&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;Guid&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outstring&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #020002"&gt;outString&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt"&gt; = &lt;span style="COLOR: #020002"&gt;g&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;ToString&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"B"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;font face="Arial"&gt;would have taken care of that -- and it does add in the dashes, but the byte order is still off.. and by off, I mean like this:&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;font face="Arial"&gt;If the proper GUID is {12345678-ABCD-1234-ABCD-123456789AB}, the returned GUID is {78563412-CDAB-3412-ABCD-123456789AB}.  I know this is a side effect of how Windows handles GUIDs internally, and there's probably an easy way to fix it, but I couldn't find it.  So, I did my own:&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #2b91af"&gt;StringBuilder&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;StringBuilder&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"{"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(6, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(4, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(2, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(0, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"-"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(10, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(8, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"-"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(14, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(12, 2));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"-"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(16, 4));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"-"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #020002"&gt;outString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Substring&lt;/span&gt;(20, 12));&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;Append&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"}"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt; &lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #020002"&gt;newString&lt;/span&gt;.&lt;span style="COLOR: #020002"&gt;ToString&lt;/span&gt;().&lt;span style="COLOR: #020002"&gt;ToUpper&lt;/span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font face="Arial"&gt;So, there you have it.  Nothing groundbreaking, but if you're just trying to get the product or upgrade codes from AD, here's the missing piece from the code I already put up.  I would have expected the Package Code to be in AD as well, but it's not.&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115742"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115742" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/115742.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/10/01/115742.aspx</guid>
            <pubDate>Mon, 01 Oct 2007 13:33:37 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/115742.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/10/01/115742.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/115742.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/115742.aspx</trackback:ping>
        </item>
        <item>
            <title>Time granularity in Robocopy</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/09/03/115130.aspx</link>
            <description>&lt;div&gt;We came across an issue where Robocopy was thinking that many files on a given server had been modified from the version that was on a different server.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Not a big deal, except "changed files" = "files that need to be copied out", and there were a lot of files that would have been copied over slow links to distant servers.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;The wierd thing - some folks were seeing the problem with Robocopy, and some were not.  Finally narrowed it down.. the people who weren't seeing the problem were on an older version of Robocopy (&lt;font color="#3366ff"&gt;confirmed 9-4-07: v 1.95&lt;/font&gt;) and the folks who were were on XP010.  However, that doesn't explain the root cause.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;If you looked at the two files in Explorer, the Modified dates were identical.  The files themselves were identical.  However, Robocopy said one was Newer.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Wrote a stupid little app that gave the Modified time down to the millisecond.. still identical.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;However, when I got down to the Ticks level (100 nanosecond), the files had different timestamps.. a mirroring utility that was in use on some servers only replicated the time down to the millisecond.  The old Robocopy only looked as far as Milliseconds, where the new one (and our primary directory replication tool) looked all the way at the Ticks level.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;The fix?  Wrote another stupid little app that compared two files - if the date, hour, minute, second, and millisecond were the same, but one of them had zeroes in the last four characters of the Ticks value (ticks % 10000), set the time of the zero to be the time of the not-zero.  Beats copying all those files out.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Code?  Here you go:&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: blue"&gt;long&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;filetick&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;File&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;file&lt;/span&gt;).&lt;span style="COLOR: #010001"&gt;Ticks&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: blue"&gt;long&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;badfiletick&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;File&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;badfile&lt;/span&gt;).&lt;span style="COLOR: #010001"&gt;Ticks&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;fileDT&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;File&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;file&lt;/span&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: #2b91af"&gt;DateTime&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;badDT&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;File&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;badfile&lt;/span&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;filetrunc&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;badtrunc&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: #010001"&gt;filetrunc&lt;/span&gt; = &lt;span style="COLOR: #010001"&gt;IsTruncated&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;filetick&lt;/span&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="COLOR: #010001"&gt;badtrunc&lt;/span&gt; = &lt;span style="COLOR: #010001"&gt;IsTruncated&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;badfiletick&lt;/span&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; ((&lt;span style="COLOR: #010001"&gt;fileDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Date&lt;/span&gt; == &lt;span style="COLOR: #010001"&gt;badDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Date&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="COLOR: #010001"&gt;fileDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Hour&lt;/span&gt; == &lt;span style="COLOR: #010001"&gt;badDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Hour&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="COLOR: #010001"&gt;fileDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Minute&lt;/span&gt; == &lt;span style="COLOR: #010001"&gt;badDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Minute&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="COLOR: #010001"&gt;fileDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Second&lt;/span&gt; == &lt;span style="COLOR: #010001"&gt;badDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Second&lt;/span&gt;) &amp;amp;&amp;amp; (&lt;span style="COLOR: #010001"&gt;fileDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Millisecond&lt;/span&gt; == &lt;span style="COLOR: #010001"&gt;badDT&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Millisecond&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #010001"&gt;filetrunc&lt;/span&gt; || &lt;span style="COLOR: #010001"&gt;badtrunc&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (!(&lt;span style="COLOR: #010001"&gt;filetrunc&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="COLOR: #010001"&gt;badtrunc&lt;/span&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                      &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                          &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #010001"&gt;filetrunc&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                              &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;                               File&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;.&lt;span style="COLOR: #010001"&gt;SetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;file&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;File&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;badfile&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                               &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                          &lt;/span&gt;&lt;span style="COLOR: blue"&gt;else&lt;/span&gt; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #010001"&gt;badtrunc&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                               &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;                               File&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;.&lt;span style="COLOR: #010001"&gt;SetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;badfile&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;File&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;GetLastWriteTime&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;file&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                               &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                       &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                 &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;and&lt;/span&gt;&lt;/div&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;font face="Arial"&gt;&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;div style="MARGIN: 0in 0in 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;IsTruncated&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;long&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;ticks&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; ((&lt;span style="COLOR: #010001"&gt;ticks&lt;/span&gt; % 10000) == 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%"&gt;&lt;font face="Arial"&gt;As always, if there's a better way to do this, please let me know - I'm still a junior coder.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115130"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=115130" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/115130.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/09/03/115130.aspx</guid>
            <pubDate>Mon, 03 Sep 2007 23:40:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/115130.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/09/03/115130.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/115130.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/115130.aspx</trackback:ping>
        </item>
        <item>
            <title>App Distribution across domains</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/08/07/114477.aspx</link>
            <description>&lt;p&gt;This one is more for my benefit than for yours... the base question for this one is a question that I've been asked more than once at work, and even more than once by the same person.  I figure if I write it out, perhaps I'll be able to explain it better.&lt;/p&gt;
&lt;p&gt;Okay - first, the players.&lt;/p&gt;
&lt;p&gt;Two domains.  Let's call them DomA and DomB.&lt;/p&gt;
&lt;p&gt;Two users.  We can call them UserA and UserB, and for the sake of discussion, we'll put them in their own domains: DomA\UserA and DomB\UserB.&lt;/p&gt;
&lt;p&gt;Two app policies (published apps) - one per domain.  Let's call them AppPolicyDomA and AppPolicyDomB to make it easy.&lt;/p&gt;
&lt;p&gt;A couple of apps per policy.  Let's go with one that's locked down with a domain-specific group (DomA\MyAppGroup and DomB\MyOtherAppGroup) and one that's open to Authenticated Users.  I don't think I'll need app names.&lt;/p&gt;
&lt;p&gt;Okay, given all these players, the base question is:&lt;/p&gt;
&lt;p&gt;"If a user from DomB logs onto a machine in DomA, what apps will he (or she) be able to install?"&lt;/p&gt;
&lt;p&gt;One opinion that was expressed was that because Loopback Merge was turned on, it'd redirect processing back to the user's own domain.  That's not actually right though, and here's why.&lt;/p&gt;
&lt;p&gt;Any given machine - be it in DomA or in DomB, will get only those policies that are linked to that specific machine's OU... and that's going to be domain-specific.  So, the contents of the user's Add/Remove programs will be those apps in those policies that are linked to that machine's OU and the user has rights to -- loopback merge or not, there's nothing that would tell this machine in DomA to go look at DomB's AppPolicyDomB to pull down the list.  &lt;/p&gt;
&lt;p&gt;So.. what would DomB\UserB be able to install if he logged onto a machine in DomA?&lt;/p&gt;
&lt;p&gt;1) Any app open to "Authenticated Users".  This could be a problem if the domains have different licensing schemes (DomA has a site license for the exact number of DomA users, etc).&lt;/p&gt;
&lt;p&gt;2) Any app where DomB's user account is a member of the DomA group.  In our environment, that's pretty much none of them.  &lt;/p&gt;
&lt;p&gt;3) All apps assigned to the machine will already be installed.  &lt;/p&gt;
&lt;p&gt;Now, you could conceivably use WMI filtering to prevent the Auth Users apps from being available. Filtering was ruled out at a level well above my pay grade so I've done no digging into this one.&lt;/p&gt;
&lt;p&gt;Okay, this may not have helped so much, but at least I can point folks at this next time they ask.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114477"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=114477" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/114477.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/08/07/114477.aspx</guid>
            <pubDate>Wed, 08 Aug 2007 02:02:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/114477.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/08/07/114477.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/114477.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/114477.aspx</trackback:ping>
        </item>
        <item>
            <title>Deleting a 64 bit registry entry from a 32 bit app in C#.</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/06/26/113485.aspx</link>
            <description>&lt;p&gt;Okay, this may be old hat to some of you, but it took me some time to figure it out and I didn't find much useful when searching.&lt;/p&gt;
&lt;p&gt;Came across a need to delete a 64 bit registry value from a 32 bit app.  The standard registry delete functions would end up deleting it from the Wow6432Node, which was what was not the desired outcome.&lt;/p&gt;
&lt;p&gt;The code to make it happen is pretty simple, but I've got no error checking in the sample code here:&lt;/p&gt;
&lt;p&gt;First, the P/Invoke stuff:&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;[DllImport("advapi32.dll")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;static&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt; &lt;span style="COLOR: blue"&gt;extern&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; RegOpenKeyEx(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;RegistryHive hKey,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;[MarshalAs(UnmanagedType.VBByRefStr)] &lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; subKey,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; options,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; sam,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;out&lt;/span&gt; UIntPtr phkResult );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;[DllImport("advapi32.dll")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;static&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt; &lt;span style="COLOR: blue"&gt;extern&lt;/span&gt; &lt;span style="COLOR: blue"&gt;int&lt;/span&gt; RegDeleteValue(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;UIntPtr hKey,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;[MarshalAs(UnmanagedType.VBByRefStr)] &lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; lpValueName&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;And then, the meat of the program:&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;UIntPtr KeyHandle = UIntPtr.Zero;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; key = @"Software\Microsoft\Windows NT\CurrentVersion\TestKey";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: blue"&gt;value&lt;/span&gt; = "DeleteThisValue";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;RegOpenKeyEx(RegistryHive.LocalMachine,&lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; key,0,0x000f013f,&lt;span style="COLOR: blue"&gt;out&lt;/span&gt; KeyHandle);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: &amp;quot;Courier New&amp;quot;"&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;RegDeleteValue(KeyHandle,&lt;span style="COLOR: blue"&gt;ref&lt;/span&gt; &lt;span style="COLOR: blue"&gt;value&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The magic numbers 0 and 0x000f103f shouldn't be hardcoded; the 0 is "Non-volatile registry" and the hex number is both "KEY_WOW64_64KEY" (0x100) and "KEY_ALL_ACCESS (0xf003f)".&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113485"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=113485" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/113485.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/06/26/113485.aspx</guid>
            <pubDate>Wed, 27 Jun 2007 01:55:37 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/113485.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/06/26/113485.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/113485.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/113485.aspx</trackback:ping>
        </item>
        <item>
            <title>Converting a policy name to a GUID</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/04/23/111892.aspx</link>
            <description>&lt;p&gt;Ok, part of all this we've already talked about requires that you have the policy's GUID.  But how do you get it?&lt;/p&gt;
&lt;p&gt;Simple enough:&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;Query&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;Criteria&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;string&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;Attribute&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DirectorySearcher&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DirectorySearcher&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DirectoryEntry&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"LDAP://DC=DOMAIN,DC=&lt;st1:place w:st="on"&gt;&lt;st1:city w:st="on"&gt;MYCOMPANY&lt;/st1:city&gt;,&lt;st1:state w:st="on"&gt;DC&lt;/st1:state&gt;&lt;/st1:place&gt;=com"&lt;/span&gt;,&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;,&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;null&lt;/span&gt;,&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;AuthenticationTypes&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Secure&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;ClientTimeout&lt;/span&gt; = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TimeSpan&lt;/span&gt;(0, 0, 10);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Filter&lt;/span&gt; = &lt;span style="COLOR: #010001"&gt;Criteria&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;SearchScope&lt;/span&gt; = &lt;span style="COLOR: #2b91af"&gt;SearchScope&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Subtree&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SearchResult&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;result&lt;/span&gt; = &lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;FindOne&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: green"&gt;//if exception was not thrown, means it connected successfuly&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (&lt;span style="COLOR: #010001"&gt;result&lt;/span&gt; != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt;(&lt;span style="COLOR: #010001"&gt;result&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Properties&lt;/span&gt;[&lt;span style="COLOR: #010001"&gt;Attribute&lt;/span&gt;][0] != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)&lt;span style="COLOR: green"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                        &lt;/span&gt;&lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Dispose&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;result&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Properties&lt;/span&gt;[&lt;span style="COLOR: #010001"&gt;Attribute&lt;/span&gt;][0].&lt;span style="COLOR: #010001"&gt;ToString&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;catch&lt;/span&gt; (&lt;span style="COLOR: #2b91af"&gt;Exception&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;ex&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #010001"&gt;ex&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Message&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: #010001"&gt;mySearcher&lt;/span&gt;.&lt;span style="COLOR: #010001"&gt;Dispose&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: #a31515"&gt;"Not found."&lt;/span&gt;;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;with the provision that the "Criteria" and "Attribute" arguments are, respectively,&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;/span&gt; &lt;/p&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;font face="Arial"&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"(&amp;amp;(objectCategory=groupPolicyContainer)(name="&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; + &lt;span style="COLOR: #010001"&gt;GUID &lt;/span&gt;+ &lt;span style="COLOR: #a31515"&gt;"))"&lt;/span&gt;&lt;/span&gt;  and &lt;font color="#a31515" size="2"&gt;"displayName" to convert &lt;font color="#000000"&gt;from GUID to policy name, and&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;"(&amp;amp;(objectCategory=groupPolicyContainer)(displayName="&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt; + &lt;span style="COLOR: #010001"&gt;Policy Name &lt;/span&gt;+ &lt;span style="COLOR: #a31515"&gt;"))"&lt;/span&gt;,&lt;span style="COLOR: #a31515"&gt;"name" &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="COLOR: #a31515"&gt;&lt;font face="Arial" color="#000000"&gt;to go from policy name to GUID.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/font&gt;&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111892"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=111892" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/111892.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/04/23/111892.aspx</guid>
            <pubDate>Mon, 23 Apr 2007 11:04:57 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/111892.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/04/23/111892.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/111892.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/111892.aspx</trackback:ping>
        </item>
        <item>
            <title>Package flags, part 2</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/02/25/107229.aspx</link>
            <description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I found my more detailed notes on the package flags.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A couple of corrections:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;The flag “524288” specifically tells whether an app is published or assigned – it’s set for assigned, unset for published.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;8 is typically set for published apps and cleared for assigned.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;I promised code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;SearchAD&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;target&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;policy&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;policyname&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;DirectoryEntry&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;entry&lt;/SPAN&gt; = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;entry&lt;/SPAN&gt; = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DirectoryEntry&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #010001"&gt;policy&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;COMException&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;Ex&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;toolStripStatusLabel1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #a31515"&gt;"Couldn't connect to the specified Active Directory Path - Error = "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;Ex&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Message&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;Ex&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;InnerException&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;DirectorySearcher&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;mySearcher&lt;/SPAN&gt; = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DirectorySearcher&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #010001"&gt;entry&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TimeSpan&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;waitTime&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;waitTime&lt;/SPAN&gt; = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;TimeSpan&lt;/SPAN&gt;(0, 0, 60); &lt;SPAN style="COLOR: green"&gt;//hh--mm-ss&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;mySearcher&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;ClientTimeout&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #010001"&gt;waitTime&lt;/SPAN&gt;; &lt;SPAN style="COLOR: green"&gt;//wait this much time to display results&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;Ex&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;toolStripStatusLabel1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #a31515"&gt;"Error = "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;Ex&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Message&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;Ex&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;InnerException&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;SearchResult&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;result&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #010001"&gt;mySearcher&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;FindOne&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//if exception was not thrown, means it connected successfuly&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;result&lt;/SPAN&gt; != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Get the 'DirectoryEntry' that corresponds to 'mySearchResult'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;DirectoryEntry&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #010001"&gt;result&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;GetDirectoryEntry&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Get the properties of the 'mySearchResult'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ResultPropertyCollection&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;myResultPropColl&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;myResultPropColl&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #010001"&gt;result&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"msiscriptname"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;flags&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #2b91af"&gt;Int32&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Parse&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"packageflags"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;ToString&lt;/SPAN&gt;());&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; ((&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"msiscriptname"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;ToString&lt;/SPAN&gt;() != &lt;SPAN style="COLOR: #a31515"&gt;"R"&lt;/SPAN&gt;) || (&lt;SPAN style="COLOR: #010001"&gt;cbRemoved&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Checked&lt;/SPAN&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; ((&lt;SPAN style="COLOR: #010001"&gt;rbDisplayName&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Checked&lt;/SPAN&gt; == &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;) &amp;amp;&amp;amp; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"displayname"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;ToString&lt;/SPAN&gt;().&lt;SPAN style="COLOR: #010001"&gt;ToUpper&lt;/SPAN&gt;().&lt;SPAN style="COLOR: #010001"&gt;Contains&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #010001"&gt;target&lt;/SPAN&gt;)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"\nInitial Flags: "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;flags&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #a31515"&gt;"\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;checkBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Checked&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"Path: "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Path&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #a31515"&gt;"\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"App name: "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"displayname"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #a31515"&gt;"\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"\tFound in policy "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;policyname&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #a31515"&gt;"\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"gPCFileSysPath"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"\tPolicy Path: "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"gPCFileSysPath"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #a31515"&gt;"\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"msifilelist"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"\tMSI Path: "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"msifilelist"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #a31515"&gt;"\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"whenchanged"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"\tWhen changed: "&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"whenchanged"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt; + &lt;SPAN style="COLOR: #a31515"&gt;"\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"msiscriptname"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;ToString&lt;/SPAN&gt;() == &lt;SPAN style="COLOR: #a31515"&gt;"A"&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"Currently assigned.\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"msiscriptname"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;ToString&lt;/SPAN&gt;() == &lt;SPAN style="COLOR: #a31515"&gt;"P"&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"Currently published.\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Properties&lt;/SPAN&gt;[&lt;SPAN style="COLOR: #a31515"&gt;"msiscriptname"&lt;/SPAN&gt;].&lt;SPAN style="COLOR: #010001"&gt;Value&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;ToString&lt;/SPAN&gt;() == &lt;SPAN style="COLOR: #a31515"&gt;"R"&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; ((&lt;SPAN style="COLOR: #010001"&gt;flags&lt;/SPAN&gt; &amp;amp; 128) != 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"Removed from policy with allow users\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"Removed from policy with Immediately Remove!\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"Flags:"&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(snipped a bunch of checking flags)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: #010001"&gt;textBox1&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Text&lt;/SPAN&gt; += &lt;SPAN style="COLOR: #a31515"&gt;"\n\n"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;DirectoryEntry&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;child&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; &lt;SPAN style="COLOR: #010001"&gt;myDirectoryEntry&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Children&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: 9.0pt .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #010001"&gt;SearchAD&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #010001"&gt;target&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #010001"&gt;child&lt;/SPAN&gt;.&lt;SPAN style="COLOR: #010001"&gt;Path&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #010001"&gt;policyname&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; tab-stops: .25in 27.0pt .5in 45.0pt .75in 63.0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;It’s relatively self-explanatory; target is a string that contains part of the app’s displayname; policyname is just a friendly description of the policy name – such as “My-App-Deployment-Policy” or whatever.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Policy is the LDAP string for the policy – something like &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;"LDAP://CN=Packages,CN=Class Store,CN=Machine,CN={BDA90329-B1C6-4E09-A60B-2BA6B19C54D6},CN=Policies,CN=System,DC=MY,DC=COMPANY,DC=com" &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;or similar.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;Oh, and a teaser for the next post:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Yes, you can un-remove and un-redeploy apps in AD.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial; mso-no-proof: yes"&gt;(oh, and pasting everything into Word before copying/pasting here seems to make it all pretty)&lt;/SPAN&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=107229"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=107229" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/107229.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/02/25/107229.aspx</guid>
            <pubDate>Sun, 25 Feb 2007 09:28:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/107229.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/02/25/107229.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/107229.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/107229.aspx</trackback:ping>
        </item>
        <item>
            <title>My, how time flies.</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/02/22/106958.aspx</link>
            <description>&lt;P&gt;Sorry about the delay.&lt;/P&gt;
&lt;P&gt;Last time I dug into the SYSVOL portion of app distribution via Group Policy.&amp;nbsp; This time, the Active Directory side.&lt;/P&gt;
&lt;P&gt;I'm sure you already know that the net result of GP distribution is that if the user is in the appropriate group, the app appears in Add/Remove programs.&amp;nbsp; The file on the Sysvol is important -- we've seen cases where for some reason the .AAS file disappeared; when it did, the app stopped appearing in Add/Remove Programs.&lt;/P&gt;
&lt;P&gt;The other half is, of course, in Active Directory.&amp;nbsp; If you've done any playing with AD, you know that all the access to the contents is done via LDAP queries.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Lots of data about a given app is stored in AD.&amp;nbsp; Here's a sample of the data stored about one application:&lt;/P&gt;
&lt;P&gt;packageflags =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1610610632&lt;BR&gt;distinguishedname =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CN=42d7f80d-a031-49cf-8f39-c1f8cb9ed71b,CN=Packages,CN=Class Store,CN=User,CN={2137E375-D8FC-4CBB-9245-4219DBBAC43F},CN=Policies,CN=System,DC=MY,DC=COMPANY,DC=com&lt;BR&gt;upgradeproductcode =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Byte[]&lt;BR&gt;versionnumberlo =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR&gt;whencreated =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/21/2006 11:45:54 AM&lt;BR&gt;packagetype =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;BR&gt;localeid =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1033&lt;BR&gt;packagename =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !dgfTest&lt;BR&gt;revision =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR&gt;name =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 42d7f80d-a031-49cf-8f39-c1f8cb9ed71b&lt;BR&gt;usnchanged =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3733596&lt;BR&gt;lastupdatesequence =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20061221114659&lt;BR&gt;objectcategory =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CN=Package-Registration,CN=Schema,CN=Configuration,DC=COMPANY,DC=com&lt;BR&gt;showinadvancedviewonly =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; True&lt;BR&gt;msiscriptpath =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \\MY.COMPANY.COM\sysvol\MY.COMPANY.COM\Policies\{2537E375-D8FC-4CBB-9245-4219DBBAC43F}\User\Applications\{0A75EB3E-6003-46A3-A8CB-B102C9A19BDC}.aas&lt;BR&gt;instancetype =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;BR&gt;comclassid =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00000000-0000-0000-0000-000000000000:0&lt;BR&gt;cn =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 42d7f80d-a031-49cf-8f39-c1f8cb9ed71b&lt;BR&gt;installuilevel =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;BR&gt;msiscriptname =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P&lt;BR&gt;objectclass =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; top&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; packageRegistration&lt;BR&gt;usncreated =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3701378&lt;BR&gt;objectguid =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Byte[]&lt;BR&gt;displayname =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !TestApp&lt;BR&gt;productcode =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Byte[]&lt;BR&gt;msifilelist =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:\\server\share\TestApp\TestApp.msi&lt;BR&gt;whenchanged =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/21/2006 4:20:04 PM&lt;BR&gt;machinearchitecture =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1282&lt;BR&gt;versionnumberhi =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR&gt;adspath =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LDAP://CN=42d7f80d-a031-49cf-8f39-c1f8cb9ed71b,CN=Packages,CN=Class Store,CN=User,CN={2137E375-D8FC-4CBB-9245-4219DBBAC43F},CN=Policies,CN=System,DC=MY,DC=COMPANY,DC=com&lt;/P&gt;
&lt;P&gt;A lot of this is self-explanatory:&lt;/P&gt;
&lt;P&gt;WhenCreated is just that -- when the entry was created.&lt;/P&gt;
&lt;P&gt;PackageName is the displayed name in Add/Remove.&lt;/P&gt;
&lt;P&gt;MSIScriptPath is the path to the AAS.&lt;/P&gt;
&lt;P&gt;WhenChanged is when the entry was touched - to do a Redeploy, change the displayed name, or similar.&lt;/P&gt;
&lt;P&gt;MSIScriptName is not what it looks like - if it's P, the package is Published.&amp;nbsp; If it's A, the package is Assigned, and if it's R, the package has been Removed.&amp;nbsp; The details as to how it was removed ("Immediately uninstall" or "Allow users to continue") are stored in the PackageFlags, detailed later.&lt;/P&gt;
&lt;P&gt;The Deployment Count is stored in "Revision" -- if you redeploy an app, this is incremented and the update times are updated.. that's all a Redeploy does.&lt;/P&gt;
&lt;P&gt;The ProductCode and UpgradeCode should match the contents of the AAS and the MSI itself.&amp;nbsp; We haven't had a case where they differed, or at least not one where we noticed; so I can't specify what happens if they don't.&lt;/P&gt;
&lt;P&gt;I've got another app that I published with the "Include&amp;nbsp;COM Information" checked.. there's no difference in the AAS files, they always include the&amp;nbsp;COM information, but there was a list of all the objects in AD when that was checked:&lt;/P&gt;
&lt;P&gt;comprogid =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crystal.crystalreport (and a bunch of other stuff under comprogid)&lt;BR&gt;comclassid =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0002560a-0000-0000-c000-000000000046:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; (and a bunch more GUIDs).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Our standard is to not include the&amp;nbsp;COM information as to avoid bloating AD -- as you've can tell, removing a record doesn't clean up the used space.&lt;/P&gt;
&lt;P&gt;The package flags were interesting - as the name suggests, they're bitflags.&lt;/P&gt;
&lt;P&gt;I couldn't tell what values 1, 2, 4, 16, 32768, and 262144 meant, but I didn't find anything that had 16 set.&lt;/P&gt;
&lt;P&gt;32 is "Display in Add/Remove Programs" (set for true)&lt;/P&gt;
&lt;P&gt;64 is "Auto-Install by File Extension Activation"&lt;/P&gt;
&lt;P&gt;128 is Removed with "Allow Users to Continue" option&lt;/P&gt;
&lt;P&gt;256 is Removed with "Immediately Uninstall" option.&amp;nbsp; Go figure, 128 and 256 shouldn't both be set.&amp;nbsp; I don't know what happens if they are.&lt;/P&gt;
&lt;P&gt;If PackageType is R, bits 128 and 256 specify what happens with existing installations.&amp;nbsp; I didn't see any examples where it was wrong.&lt;/P&gt;
&lt;P&gt;512 shows that there is an Upgrade.&lt;/P&gt;
&lt;P&gt;1024 is set when the app is Assigned.&lt;/P&gt;
&lt;P&gt;2048 is "Uninstall when falls out of the scope of management" if it's false.&lt;/P&gt;
&lt;P&gt;4096 should be the opposite of 2048.&lt;/P&gt;
&lt;P&gt;If an app&amp;nbsp;is a User&amp;nbsp;Assigned app (automatic install per-user at logon), 8192 should be set.&lt;/P&gt;
&lt;P&gt;16384 seemed to have two meanings: either a Per-Machine assignment (Computer Configuration) or a published app that was a Required Upgrade.&lt;/P&gt;
&lt;P&gt;65536 selects whether an app is available to IA64 users - false for yes.&lt;/P&gt;
&lt;P&gt;131072 is "Ignore Language"&lt;/P&gt;
&lt;P&gt;524288 is UI Level "Basic".&lt;/P&gt;
&lt;P&gt;So, if you've got a normal published app, the AD entries would look similar to this:&lt;/P&gt;
&lt;P&gt;packageflags =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1610610568&lt;BR&gt;distinguishedname =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CN=6cbb5c46-d523-42a6-8a1c-8765c168721a,CN=Packages,CN=Class Store,CN=User,CN={2137E375-D8FC-4CBB-9245-4219DBBAC43F},CN=Policies,CN=System,DC=MY,DC=COMPANY,DC=com&lt;BR&gt;upgradeproductcode =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Byte[]&lt;BR&gt;versionnumberlo =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR&gt;whencreated =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/21/2006 11:47:09 AM&lt;BR&gt;packagetype =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;BR&gt;localeid =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1033&lt;BR&gt;packagename =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !Test2&lt;BR&gt;revision =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR&gt;name =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6cbb5c46-d523-42a6-8a1c-8765c168721a&lt;BR&gt;lastupdatesequence =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20061221114725&lt;BR&gt;objectcategory =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CN=Package-Registration,CN=Schema,CN=Configuration,DC=COMPANY,DC=com&lt;BR&gt;showinadvancedviewonly =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; True&lt;BR&gt;msiscriptpath =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file://MY.COMPANY.COM/sysvol/MY.COMPANY.COM/Policies/%7B2137E375-D8FC-4CBB-9245-4219DBBAC43F%7D/User/Applications/%7B99FF6442-0179-4961-B5D6-F5C56AFC3FE3%7D.aas&lt;BR&gt;instancetype =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;BR&gt;usnchanged =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3733588&lt;BR&gt;installuilevel =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;BR&gt;msiscriptname =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; P&lt;BR&gt;objectclass =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; top&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; packageRegistration&lt;BR&gt;usncreated =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3701383&lt;BR&gt;objectguid =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Byte[]&lt;BR&gt;displayname =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !Test2&lt;BR&gt;productcode =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Byte[]&lt;BR&gt;msifilelist =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:\\server\share\test2\test2.msi&lt;BR&gt;whenchanged =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/21/2006 4:20:04 PM&lt;BR&gt;cn =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6cbb5c46-d523-42a6-8a1c-8765c168721a&lt;BR&gt;machinearchitecture =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1282&lt;BR&gt;versionnumberhi =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR&gt;adspath =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldap://CN=6cbb5c46-d523-42a6-8a1c-8765c168721a,CN=Packages,CN=Class/ Store,CN=User,CN={2137E375-D8FC-4CBB-9245-4219DBBAC43F},CN=Policies,CN=System,DC=MY,DC=COMPANY,DC=com&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;and then you go ahead and Remove with the "Immediately Uninstall" option, these are the items that would change:&lt;/P&gt;
&lt;P&gt;packageflags =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1610612464&lt;BR&gt;lastupdatesequence =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20061221195037&lt;BR&gt;usnchanged =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3758829&lt;BR&gt;msiscriptname =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R&lt;BR&gt;whenchanged =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12/21/2006 8:00:41 PM 
&lt;P&gt;Go figure the three changed counters would be updated.&amp;nbsp; MSIScriptName predictably changes to an R, and the package flags have a difference in 1024, 512, 256, 64, 32, and 8.&lt;/P&gt;
&lt;P&gt;As mentioned, I don't know what 8 does.&amp;nbsp; Unsetting 32 hides the app in Add/Remove.&amp;nbsp; Unsetting 64 turns of the Auto-Install by Extension.&amp;nbsp; Turning off 256 is the "Immediately Uninstall" that we specified.&amp;nbsp; 512 turns off any upgrades, and 1024 specifically unassigns the app.&amp;nbsp; My theory is that undoing these changes would stop an unintentional removal or redeploy but I haven't had a chance to do any testing on that (yet; but it's on my list).&amp;nbsp; No code today; I've got code that extracts all this stuff from AD but it's at work, and I'm not.&amp;nbsp; I'll try to get it posted this week.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=106958"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=106958" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/106958.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/02/22/106958.aspx</guid>
            <pubDate>Thu, 22 Feb 2007 08:17:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/106958.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/02/22/106958.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/106958.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/106958.aspx</trackback:ping>
        </item>
        <item>
            <title>AAS: Under the hood</title>
            <link>http://geekswithblogs.net/derekf/archive/2007/01/06/102894.aspx</link>
            <description>&lt;P&gt;Ok, I need to work on my ability to tell when exactly "tomorrow" is.&lt;/P&gt;
&lt;P&gt;Last time I left off by announcing a better way to look at the guts of an AAS file instead of just looking for the first, second, and last GUIDs.&amp;nbsp; That better way is part of the MSI portion of the Platform SDK -- a VBS script named WiListScr.vbs.&amp;nbsp; On my machine the file is at \Microsoft Platform SDK\Samples\SysMgmt\Msi\Scripts (with the 2003 Server SP1 version)&amp;nbsp;; yours may vary.&lt;/P&gt;
&lt;P&gt;Not sure of the legality of posting the script so I'm not going to do it, but what I will do is provide sample output:&lt;/P&gt;
&lt;P&gt;Microsoft (R) Windows Script Host Version 5.6&lt;BR&gt;Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.&lt;/P&gt;
&lt;P&gt;Header(Signature=1397708873,Version=200,Timestamp=879849785,LangId=1033,Platform=0,ScriptType=3,ScriptMajorVersion=21,ScriptMinorVersion=4,ScriptAttributes=0)&lt;BR&gt;ProductInfo(ProductKey={E92B7A19-5FD5-4AEE-9FEF-7AD5DD3A675E},ProductName=MyApp 1.0,PackageName=AppName.msi,Language=1033,Version=1510&lt;BR&gt;60480,Assignment=1,ObsoleteArg=0,ProductIcon=ARPICON.80486C74_ABED_4227_AF5C_9B1791CFA89C.exe,,PackageCode={1B96C48C-2DD6-4D4C-ABCD-B00570F26EC7},,,InstanceType&lt;BR&gt;=0,,)&lt;BR&gt;DialogInfo(Type=0,Argument=1033,1252)&lt;BR&gt;DialogInfo(Type=1,Argument=MyApp 1.0)&lt;BR&gt;RollbackInfo(,RollbackAction=Rollback,RollbackDescription=Rolling back action:,RollbackTemplate=[1],CleanupAction=RollbackCleanup,CleanupDescription=Removing backup files,CleanupTemplate=File: [1])&lt;BR&gt;ActionStart(Name=CreateShortcuts,Description=Creating shortcuts,Template=Shortcut: [1])&lt;BR&gt;SetTargetFolder(Folder=23\MyApp 1.0\)&lt;BR&gt;ShortcutCreate(Name=PROGRA~2|MyAppPN,Feature=PN,Component={2AE8A409-AA18-4780-856F-DE6ED0FA4BAB},,,WorkingDir=C:\Program Files\MyApp\,Icon=Icon80951CEC.exe.C76E2E86_AE54_4AF5_997C_63EBB83C7651.exe,IconIndex=0,HotKey=0,ShowCmd=1,)&lt;BR&gt;SetTargetFolder(Folder=23\MyApp\ApPFolder\)&lt;BR&gt;ShortcutCreate(Name=PROGRA~1|Program Neighborhood Agent,Feature=PN_AGENT,Component={1DD10EF4-2557-4F04-A23C-9B8963D65DE0},,,WorkingDir=C:\Program Files\MyApp\,Icon=Icon80951CEC.exe.20FBBF0A_A7E5_4BDE_9798_9811C3D135AC.exe,IconIndex=0,,ShowCmd=1,)&lt;BR&gt;ActionStart(Name=RegisterClassInfo,Description=Registering Class servers,Template=Class Id: [1])&lt;BR&gt;RegClassInfoRegister(Feature=My_App,Component={6E02C3A5-9184-4E16-8282-B40F3516DA46},,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},ProgId=MyApp.App.2.5,VIProgId=MyApp.App,Description=My App,Context=InprocServer32,,,,,,,,,)&lt;BR&gt;RegClassInfoRegister(Feature=My_App,Component={6E02C3A5-9184-4E16-8282-B40F3516DA46},,ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3},ProgId=MyApp.AppProp.2.4,VIProgId=MyApp.AppProp,Description=My App Properties,Context=InprocServer32,,,,,,,,,)&lt;BR&gt;RegClassInfoRegister(Feature=SSON_BINARIES,Component={103B82C3-601D-400C-BC42-CCF14C324A2F},,ClsId={2C22A8C9-B8C8-4B0C-8063-D63F18DB075F},,,Description=PSFactoryBuffer,Context=InprocServer32,,,,,IconIndex=0,,,,)&lt;BR&gt;RegClassInfoRegister(Feature=My_App,Component={6C858A94-FC28-40F8-9BE1-F745061A2C2B},,ClsId={666006C6-C743-11D5-BA02-00C04F2EFC0F},ProgId=ProxySup.ProxySupMain.1,VIProgId=ProxySup.ProxySupMain,Description=ProxySupMain,Context=InprocServer32,,,,,IconIndex=0,,,,)&lt;BR&gt;RegClassInfoRegister(Feature=SSON_BINARIES,Component={614BA753-7004-4BAD-95FC-0AAB52140FE6},,ClsId={E63F16AA-7C16-4697-826C-98B7A5092299},ProgId=SSON.Cmpnt1.1,VIProgId=SSON.Cmpnt1,Description=SSON COM component,Context=LocalServer32,,,,,IconIndex=0,DefInprocHandler=ssoncom.exe,,,)&lt;BR&gt;RegClassInfoRegister(Feature=PN_AGENT,Component={260DAD21-3007-4FDB-90A5-F1390D2E2977},,ClsId={B94E2601-D7A1-11D4-A1EE-444553540000},ProgId=DesktopPortalfile.IconHandler1.0,VIProgId=DesktopPortalfile.IconHandler,Description=DesktopPortal Icon Handler,Context=InprocServer32,,,,,,,,,)&lt;BR&gt;ActionStart(Name=RegisterExtensionInfo,Description=Registering extension servers,Template=Extension: [1])&lt;BR&gt;RegExtensionInfoRegister(Feature=My_App,Component={DEAEF21B-4507-4142-9853-BE482CCA8FB2},,Extension=app,ProgId=MyApp.App.2.5,,,ContentType=applMyApp.Apption/x-myapp,Order=1,open,,"%1")&lt;BR&gt;RegExtensionInfoRegister(Feature=PN_AGENT,Component={1DD10EF4-2557-4F04-A23C-9B8963D65DE0},,Extension=pnagent,ProgId=PNAgentFile,,,ContentType=applMyApp.Apption/x-pnagent,Order=1,open,,"%1")&lt;BR&gt;ActionStart(Name=RegisterProgIdInfo,Description=Unregistering program identifiers,Template=ProgId: [1])&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.App.2.5,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},Extension=MyApp.App,Description=My App,Icon=Iconlights.ico.827545C6_7013_4DE1_8E6C_DAEE4C57F54A.exe,IconIndex=0,VIProgId=MyApp.App,VIProgIdDescription=My App,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.AppProp.2.4,ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3},,Description=My App Properties,,,VIProgId=MyApp.AppProp,VIProgIdDescription=My App Properties,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=ProxySup.ProxySupMain.1,ClsId={666006C6-C743-11D5-BA02-00C04F2EFC0F},,Description=ProxySupMain,,,VIProgId=ProxySup.ProxySupMain,VIProgIdDescription=ProxySupMain,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=SSON.Cmpnt1.1,ClsId={E63F16AA-7C16-4697-826C-98B7A5092299},,Description=SSON COM component,,,VIProgId=SSON.Cmpnt1,VIProgIdDescription=SSON COM component,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.App.2,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},,Description=My App,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.App.2.1,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},,Description=My App,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.App.2.2,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},,Description=My App,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.App.2.3,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},,Description=My App,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.App.2.4,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},,Description=My App,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.AppProp.2,ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3},,,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.AppProp.2.1,ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3},,Description=My App Properties,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.AppProp.2.2,ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3},,Description=My App Properties,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=MyApp.AppProp.2.3,ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3},,Description=My App Properties,,,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=WinFrameMyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3},,Description=MyApp.File,Icon=Iconlights.ico.827545C6_7013_4DE1_8E6C_DAEE4C57F54A.exe,IconIndex=0,,,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=Appfile.IconHandler1.0,ClsId={B94E2601-D7A1-11D4-A1EE-444553540000},,Description=App Icon Handler,,,VIProgId=DesktopPortalfile.IconHandler,VIProgIdDescription=DesktopPortal Icon Handler,)&lt;BR&gt;RegProgIdInfoRegister(ProgId=PNAgentFile,,Extension=pnagent,Description=MyAppPN Agent File,Icon=Icon80951CEC.exe.20FBBF0A_A7E5_4BDE_9798_9811C3D135AC.exe,IconIndex=0,,,)&lt;BR&gt;ActionStart(Name=RegisterMIMEInfo,Description=Registering MIME info,Template=MIME Content Type: [1], Extension: [2])&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App;charset=euc-jp,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App;charset=UTF8,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App;charset=UTF-8,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App;charset=MS950,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App;charset=MS949,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App;charset=MS936,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App;charset=ISO-8859-1,Extension=app,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App; charset=euc-jp,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App; charset=UTF8,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App; charset=UTF-8,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App; charset=MS950,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App; charset=MS949,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App; charset=MS936,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=applMyApp.Apption/x-MyApp.App; charset=ISO-8859-1,Extension=MyApp.App,ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3})&lt;BR&gt;RegMIMEInfoRegister(ContentType=application/x-pnagent,Extension=pnagent,ClsId={B94E2601-D7A1-11D4-A1EE-444553540000})&lt;BR&gt;ActionStart(Name=PublishFeatures,Description=Publishing Product Features,Template=Feature: [1])&lt;BR&gt;FeaturePublish(Feature=My_App,,Absent=0,)&lt;BR&gt;FeaturePublish(Feature=PN,Parent=My_App,Absent=0,)&lt;BR&gt;FeaturePublish(Feature=PN_AGENT,Parent=My_App,Absent=0,)&lt;BR&gt;FeaturePublish(Feature=WEB_CLIENT,Parent=My_App,Absent=0,)&lt;BR&gt;FeaturePublish(Feature=SSON_BINARIES,,Absent=0,)&lt;BR&gt;FeaturePublish(Feature=SSON_SETTINGS,,Absent=1,)&lt;BR&gt;ActionStart(Name=PublishProduct,Description=Publishing product information,)&lt;BR&gt;IconCreate(Icon=ARPICON.80486C74_ABED_4227_AF5C_9B1791CFA89C.exe,Data=BinaryData)&lt;BR&gt;IconCreate(Icon=Icon80951CEC.exe.C76E2E86_AE54_4AF5_997C_63EBB83C7651.exe,Data=BinaryData)&lt;BR&gt;IconCreate(Icon=Iconlights.ico.827545C6_7013_4DE1_8E6C_DAEE4C57F54A.exe,Data=BinaryData)&lt;BR&gt;IconCreate(Icon=Icon80951CEC.exe.20FBBF0A_A7E5_4BDE_9798_9811C3D135AC.exe,Data=BinaryData)&lt;BR&gt;ProductPublish(PackageKey={1B96C48C-2DD6-4D4C-ABCD-B00570F26EC7})&lt;BR&gt;UpgradeCodePublish(UpgradeCode={94F321B9-45B0-4125-970D-DE3D98CBCA1C})&lt;BR&gt;SourceListPublish(,,,,NumberOfDisks=3,1,,LABEL,2,,LABEL,3,,LABEL,\\server\share\MyApp.10\)&lt;BR&gt;ProductPublishClient(,,)&lt;BR&gt;ActionStart(Name=HideCancelButton.827545C6_7013_4DE1_8E6C_DAEE4C57F54A,,)&lt;BR&gt;CustomActionSchedule(Action=HideCancelButton.827545C6_7013_4DE1_8E6C_DAEE4C57F54A,ActionType=3137,Source=BinaryData,Target=HideCancelButton,)&lt;BR&gt;ActionStart(Name=AdvertiseLNK2Type.827545C6_7013_4DE1_8E6C_DAEE4C57F54A,,)&lt;BR&gt;CustomActionSchedule(Action=AdvertiseLNK2Type.827545C6_7013_4DE1_8E6C_DAEE4C57F54A,ActionType=3137,Source=BinaryData,Target=AdvertiseLNK2Type,)&lt;BR&gt;ActionStart(Name=FixDesktopPNIcon.C76E2E86_AE54_4AF5_997C_63EBB83C7651,,)&lt;BR&gt;CustomActionSchedule(Action=FixDesktopPNIcon.C76E2E86_AE54_4AF5_997C_63EBB83C7651,ActionType=3137,Source=BinaryData,Target=FixDesktopPNIcon,CustomActionData=C:\&lt;BR&gt;Documents and Settings\All Users\Desktop\MyApp.lnk2)&lt;BR&gt;End(Checksum=0,ProgressTotalHDWord=0,)&lt;/P&gt;
&lt;P dir=ltr&gt;A bit on the hard-to-read side, but way more information than what last time was able to extract.&amp;nbsp; The information from last time is here:&lt;/P&gt;
&lt;P dir=ltr&gt;ProductInfo(ProductKey={E92B7A19-5FD5-4AEE-9FEF-7AD5DD3A675E}&lt;/P&gt;
&lt;P dir=ltr&gt;PackageCode={1B96C48C-2DD6-4D4C-ABCD-B00570F26EC7}&lt;/P&gt;
&lt;P dir=ltr&gt;UpgradeCodePublish(UpgradeCode={94F321B9-45B0-4125-970D-DE3D98CBCA1C})&lt;BR&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;but I'm not a big fan of using batch files piping output through Find.exe to get what I need to know.&lt;/P&gt;
&lt;P dir=ltr&gt;Instead, I wanted to go ahead and write an equivalent function in C#, since a) I don't really do VB or VBS, and b) as&amp;nbsp;junior C# coder, anything I can convert over is a good thing as I get to learn while doing it.&lt;/P&gt;
&lt;P dir=ltr&gt;Not too much of the VBS code could be used -- it uses "CreateObject("WindowsInstaller.Installer")" to spawn the Installer object, which is not the C# way.&amp;nbsp; The big thing to find in the VBS code is the "msiOpenDatabaseModeListScript" constant (which is set to 5) -- the &lt;A href="http://msdn2.microsoft.com/en-us/library/aa369434.aspx"&gt;MSDN page for OpenDatabase&lt;/A&gt; doesn't list a value of 5 (just 1, 2, 3, 4, and 32).&lt;/P&gt;
&lt;P dir=ltr&gt;Armed with the knowledge that OpenDatabase with an OpenMode of 5 cracks open AAS files, we end up with this (yes, you get no fancy colored source - looks like I get my choice of colors or indent, and I choose proper indentation&lt;FONT color=#000000&gt;):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;if (Environment.GetCommandLineArgs().Length == 1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment.Exit(0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String AASPath = Environment.GetCommandLineArgs()[1];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //accept paths with spaces and no quotes&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 2; i &amp;lt;= Environment.GetCommandLineArgs().GetUpperBound(0); i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AASPath = AASPath + " " + Environment.GetCommandLineArgs()[i];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IntPtr dbhandle = IntPtr.Zero;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IntPtr viewhandle = IntPtr.Zero;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IntPtr rechandle = IntPtr.Zero;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsiOpenDatabase(AASPath, (IntPtr)msiOpenDatabaseModeListScript, ref dbhandle);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int nres = MsiDatabaseOpenView(dbhandle, "", ref viewhandle);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (MsiViewFetch(viewhandle, ref rechandle) == 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int Col0Len = 512;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder Definition = new StringBuilder(Col0Len);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nres = MsiRecordGetString(rechandle, 0, Definition, ref Col0Len);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 1; i &amp;lt; 20; i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int outlen = 255;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder outbuff = new StringBuilder(outlen);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nres = MsiRecordGetString(rechandle, i, outbuff, ref outlen);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (nres == 0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Definition.ToString().Contains("[" + i + "]"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Definition.Replace("[" + i + "]", outbuff.ToString());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (outbuff.Length &amp;gt; 0) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Definition.Append(", " + outbuff);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtOut1.Text += Definition.ToString() + "\n";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;You'll need the declarations and P/Invoke definitions (here I don't care so much about indent)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;enum&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;tagMSIColInfo&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;MSICOLINFO_NAMES = 0,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;MSICOLINFO_TYPES = 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;const&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; msiOpenDatabaseModeListScript = 5;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiOpenDatabase(&lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; dbpath, &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; openMode, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; msihandle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiDatabaseOpenView(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; handle, &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; query, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; viewhandle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiViewExecute(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; viewhandle, &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; recordhandle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiViewFetch(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; viewhandle, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; recordhandle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiRecordGetString(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; recordhandle, &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; recno, &lt;FONT color=#2b91af&gt;StringBuilder&lt;/FONT&gt; szbuff, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; len);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiCloseHandle(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; handle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiViewClose(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; viewhandle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiSummaryInfoGetProperty(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; handle, &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; uiProperty, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; puiDataType, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; piValue, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; System.Runtime.InteropServices.ComTypes.&lt;FONT color=#2b91af&gt;FILETIME&lt;/FONT&gt; pftValue, &lt;FONT color=#2b91af&gt;String&lt;/FONT&gt; szValueBuf, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; pcchValueBuf);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiGetSummaryInformation(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; msihandle, &lt;FONT color=#0000ff&gt;string&lt;/FONT&gt; szDatabasePath, &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; uiUpdateCount, &lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; SummaryInfo);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiSummaryInfoPersist(&lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; summary_handle);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;[&lt;FONT color=#2b91af&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#a31515&gt;"msi"&lt;/FONT&gt;, CharSet = &lt;FONT color=#2b91af&gt;CharSet&lt;/FONT&gt;.Auto)]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;static&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;extern&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; MsiViewGetColumnInfo(&lt;FONT color=#0000ff&gt;ref&lt;/FONT&gt; &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; hView, &lt;FONT color=#2b91af&gt;tagMSIColInfo&lt;/FONT&gt; tag, &lt;FONT color=#2b91af&gt;IntPtr&lt;/FONT&gt; record);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P dir=ltr&gt;Column zero in a given row contains the definition for the row in a strange format.&amp;nbsp; The first row of the same AAS as the VBS went through looks like this:&lt;/P&gt;
&lt;P dir=ltr&gt;{Header({Signature=[1]},{Version=[2]},{Timestamp=[3]},{LangId=[4]},{Platform=[5]},{ScriptType=[6]},{ScriptMajorVersion=[7]},{ScriptMinorVersion=[8]},{ScriptAttributes=[9]})}&lt;/P&gt;
&lt;P dir=ltr&gt;and then columns 1 through 9 contain the values for those items.&lt;/P&gt;
&lt;P dir=ltr&gt;The output of this code looks something like this:&lt;/P&gt;
&lt;P dir=ltr&gt;Header({Signature=1397708873},{Version=200},{Timestamp=879849785},{LangId=1033},{Platform=0},{ScriptType=3},{ScriptMajorVersion=21},{ScriptMinorVersion=4},{ScriptAttributes=0})&lt;BR&gt;ProductInfo({ProductKey={E92B7A19-5FD5-4AEE-9FEF-7AD5DD3A675E}},{ProductName=MyApp 1.0},{PackageName=MyApp.msi},{Language=1033},{Version=151060480},{Assignment=1},{ObsoleteArg=0},{ProductIcon=ARPICON.80486C74_ABED_4227_AF5C_9B1791CFA89C.exe},{PackageMediaPath=},{PackageCode={1B96C48C-2DD6-4D4C-ABCD-B00570F26EC7}},{AppCompatDB=},{AppCompatID=},{InstanceType=0},{LUASetting=},{RemoteURTInstalls=})&lt;BR&gt;DialogInfo({Type=0},{Argument=1033}), 1252&lt;BR&gt;DialogInfo({Type=1},{Argument=MyApp 1.0})&lt;BR&gt;RollbackInfo({Reserved=},{RollbackAction=Rollback},{RollbackDescription=Rolling back action:},{RollbackTemplate=[1]},{CleanupAction=RollbackCleanup},{CleanupDescription=Removing backup files},{CleanupTemplate=File: [1]})&lt;BR&gt;ActionStart({Name=CreateShortcuts},{Description=Creating shortcuts},{Template=Shortcut: [1]})&lt;BR&gt;SetTargetFolder({Folder=23\MyApp 1.0\})&lt;BR&gt;ShortcutCreate({Name=PROGRA~2|MyAppPN},{Feature=PN},{Component={2AE8A409-AA18-4780-856F-DE6ED0FA4BAB}},{FileName=},{Arguments=},{WorkingDir=C:\Program Files\MyApp\},{Icon=Icon80951CEC.exe.C76E2E86_AE54_4AF5_997C_63EBB83C7651.exe},{IconIndex=0},{HotKey=0},{ShowCmd=1},{Description=})&lt;BR&gt;SetTargetFolder({Folder=23\MyApp\MyApp Clients\})&lt;BR&gt;ShortcutCreate({Name=PROGRA~1|Program Neighborhood Agent},{Feature=PN_AGENT},{Component={1DD10EF4-2557-4F04-A23C-9B8963D65DE0}},{FileName=},{Arguments=},{WorkingDir=C:\Program Files\MyApp\},{Icon=Icon80951CEC.exe.20FBBF0A_A7E5_4BDE_9798_9811C3D135AC.exe},{IconIndex=0},{HotKey=},{ShowCmd=1},{Description=})&lt;BR&gt;ActionStart({Name=RegisterClassInfo},{Description=Registering Class servers},{Template=Class Id: [1]})&lt;BR&gt;RegClassInfoRegister({Feature=My_App},{Component={6E02C3A5-9184-4E16-8282-B40F3516DA46}},{FileName=},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{ProgId=MyApp.App.2.5},{VIProgId=MyApp.App},{Description=My App},{Context=InprocServer32},{Insertable=},{AppID=},{FileTypeMask=},{Icon=},{IconIndex=},{DefInprocHandler=},{Argument=},{AssemblyName=},{AssemblyType=})&lt;BR&gt;RegClassInfoRegister({Feature=My_App},{Component={6E02C3A5-9184-4E16-8282-B40F3516DA46}},{FileName=},{ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3}},{ProgId=MyApp.AppProp.2.4},{VIProgId=MyApp.AppProp},{Description=My App Properties},{Context=InprocServer32},{Insertable=},{AppID=},{FileTypeMask=},{Icon=},{IconIndex=},{DefInprocHandler=},{Argument=},{AssemblyName=},{AssemblyType=})&lt;BR&gt;RegClassInfoRegister({Feature=SSON_BINARIES},{Component={103B82C3-601D-400C-BC42-CCF14C324A2F}},{FileName=},{ClsId={2C22A8C9-B8C8-4B0C-8063-D63F18DB075F}},{ProgId=},{VIProgId=},{Description=PSFactoryBuffer},{Context=InprocServer32},{Insertable=},{AppID=},{FileTypeMask=},{Icon=},{IconIndex=0},{DefInprocHandler=},{Argument=},{AssemblyName=},{AssemblyType=})&lt;BR&gt;RegClassInfoRegister({Feature=My_App},{Component={6C858A94-FC28-40F8-9BE1-F745061A2C2B}},{FileName=},{ClsId={666006C6-C743-11D5-BA02-00C04F2EFC0F}},{ProgId=ProxySup.ProxySupMain.1},{VIProgId=ProxySup.ProxySupMain},{Description=ProxySupMain},{Context=InprocServer32},{Insertable=},{AppID=},{FileTypeMask=},{Icon=},{IconIndex=0},{DefInprocHandler=},{Argument=},{AssemblyName=},{AssemblyType=})&lt;BR&gt;RegClassInfoRegister({Feature=SSON_BINARIES},{Component={614BA753-7004-4BAD-95FC-0AAB52140FE6}},{FileName=},{ClsId={E63F16AA-7C16-4697-826C-98B7A5092299}},{ProgId=SSON.Cmpnt1.1},{VIProgId=SSON.Cmpnt1},{Description=SSON COM component},{Context=LocalServer32},{Insertable=},{AppID=},{FileTypeMask=},{Icon=},{IconIndex=0},{DefInprocHandler=ssoncom.exe},{Argument=},{AssemblyName=},{AssemblyType=})&lt;BR&gt;RegClassInfoRegister({Feature=PN_AGENT},{Component={260DAD21-3007-4FDB-90A5-F1390D2E2977}},{FileName=},{ClsId={B94E2601-D7A1-11D4-A1EE-444553540000}},{ProgId=DesktopPortalfile.IconHandler1.0},{VIProgId=DesktopPortalfile.IconHandler},{Description=DesktopPortal Icon Handler},{Context=InprocServer32},{Insertable=},{AppID=},{FileTypeMask=},{Icon=},{IconIndex=},{DefInprocHandler=},{Argument=},{AssemblyName=},{AssemblyType=})&lt;BR&gt;ActionStart({Name=RegisterExtensionInfo},{Description=Registering extension servers},{Template=Extension: [1]})&lt;BR&gt;RegExtensionInfoRegister({Feature=My_App},{Component={DEAEF21B-4507-4142-9853-BE482CCA8FB2}},{FileName=},{Extension=app},{ProgId=MyApp.App.2.5},{ShellNew=},{ShellNewValue=},{ContentType=application/x-myapp},{Order=1}), open, "%1"&lt;BR&gt;RegExtensionInfoRegister({Feature=PN_AGENT},{Component={1DD10EF4-2557-4F04-A23C-9B8963D65DE0}},{FileName=},{Extension=pnagent},{ProgId=PNAgentFile},{ShellNew=},{ShellNewValue=},{ContentType=application/x-pnagent},{Order=1}), open, "%1"&lt;BR&gt;ActionStart({Name=RegisterProgIdInfo},{Description=Unregistering program identifiers},{Template=ProgId: [1]})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.App.2.5},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{Extension=app},{Description=My App},{Icon=Iconlights.ico.827545C6_7013_4DE1_8E6C_DAEE4C57F54A.exe},{IconIndex=0},{VIProgId=MyApp.App},{VIProgIdDescription=My App},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.AppProp.2.4},{ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App Properties},{Icon=},{IconIndex=},{VIProgId=MyApp.AppProp},{VIProgIdDescription=My App Properties},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=ProxySup.ProxySupMain.1},{ClsId={666006C6-C743-11D5-BA02-00C04F2EFC0F}},{Extension=},{Description=ProxySupMain},{Icon=},{IconIndex=},{VIProgId=ProxySup.ProxySupMain},{VIProgIdDescription=ProxySupMain},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=SSON.Cmpnt1.1},{ClsId={E63F16AA-7C16-4697-826C-98B7A5092299}},{Extension=},{Description=SSON COM component},{Icon=},{IconIndex=},{VIProgId=SSON.Cmpnt1},{VIProgIdDescription=SSON COM component},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.App.2},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.App.2.1},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.App.2.2},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.App.2.3},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.App.2.4},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.AppProp.2},{ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.AppProp.2.1},{ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App Properties},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.AppProp.2.2},{ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App Properties},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp.AppProp.2.3},{ClsId={238F6F85-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=My App Properties},{Icon=},{IconIndex=},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=MyApp},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}},{Extension=},{Description=MyApp Connection},{Icon=Iconlights.ico.827545C6_7013_4DE1_8E6C_DAEE4C57F54A.exe},{IconIndex=0},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=DesktopPortalfile.IconHandler1.0},{ClsId={B94E2601-D7A1-11D4-A1EE-444553540000}},{Extension=},{Description=DesktopPortal Icon Handler},{Icon=},{IconIndex=},{VIProgId=DesktopPortalfile.IconHandler},{VIProgIdDescription=DesktopPortal Icon Handler},{Insertable=})&lt;BR&gt;RegProgIdInfoRegister({ProgId=PNAgentFile},{ClsId=},{Extension=pnagent},{Description=MyAppPN Agent File},{Icon=Icon80951CEC.exe.20FBBF0A_A7E5_4BDE_9798_9811C3D135AC.exe},{IconIndex=0},{VIProgId=},{VIProgIdDescription=},{Insertable=})&lt;BR&gt;ActionStart({Name=RegisterMIMEInfo},{Description=Registering MIME info},{Template=MIME Content Type: [1], Extension: [2]})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp;charset=euc-jp},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp;charset=UTF8},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp;charset=UTF-8},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp;charset=MS950},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp;charset=MS949},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp;charset=MS936},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp;charset=ISO-8859-1},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp; charset=euc-jp},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp; charset=UTF8},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp; charset=UTF-8},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp; charset=MS950},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp; charset=MS949},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp; charset=MS936},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-myapp; charset=ISO-8859-1},{Extension=app},{ClsId={238F6F83-B8B4-11CF-8771-00A024541EE3}})&lt;BR&gt;RegMIMEInfoRegister({ContentType=application/x-pnagent},{Extension=pnagent},{ClsId={B94E2601-D7A1-11D4-A1EE-444553540000}})&lt;BR&gt;ActionStart({Name=PublishFeatures},{Description=Publishing Product Features},{Template=Feature: [1]})&lt;BR&gt;FeaturePublish({Feature=My_App},{Parent=},{Absent=0},{Component=})&lt;BR&gt;FeaturePublish({Feature=PN},{Parent=My_App},{Absent=0},{Component=})&lt;BR&gt;FeaturePublish({Feature=PN_AGENT},{Parent=My_App},{Absent=0},{Component=})&lt;BR&gt;FeaturePublish({Feature=WEB_CLIENT},{Parent=My_App},{Absent=0},{Component=})&lt;BR&gt;FeaturePublish({Feature=SSON_BINARIES},{Parent=},{Absent=0},{Component=})&lt;BR&gt;FeaturePublish({Feature=SSON_SETTINGS},{Parent=},{Absent=1},{Component=})&lt;BR&gt;ActionStart({Name=PublishProduct},{Description=Publishing product information},{Template=})&lt;BR&gt;IconCreate({Icon=ARPICON.80486C74_ABED_4227_AF5C_9B1791CFA89C.exe},{Data=[2]})&lt;BR&gt;IconCreate({Icon=Icon80951CEC.exe.C76E2E86_AE54_4AF5_997C_63EBB83C7651.exe},{Data=[2]})&lt;BR&gt;IconCreate({Icon=Iconlights.ico.827545C6_7013_4DE1_8E6C_DAEE4C57F54A.exe},{Data=[2]})&lt;BR&gt;IconCreate({Icon=Icon80951CEC.exe.20FBBF0A_A7E5_4BDE_9798_9811C3D135AC.exe},{Data=[2]})&lt;BR&gt;ProductPublish({PackageKey={1B96C48C-2DD6-4D4C-ABCD-B00570F26EC7}})&lt;BR&gt;UpgradeCodePublish({UpgradeCode={94F321B9-45B0-4125-970D-DE3D98CBCA1C}})&lt;BR&gt;SourceListPublish({PatchCode=},{PatchPackageName=},{DiskPromptTemplate=},{PackagePath=},{NumberOfDisks=3}), 1, LABEL, 2, LABEL, 3, LABEL, &lt;A href="file://\\Server\share\MyApp.10\"&gt;\\Server\share\MyApp.10\&lt;/A&gt;&lt;BR&gt;ProductPublishClient({Parent=},{ChildPackagePath=},{ChildDiskId=})&lt;BR&gt;ActionStart({Name=HideCancelButton.827545C6_7013_4DE1_8E6C_DAEE4C57F54A},{Description=},{Template=})&lt;BR&gt;CustomActionSchedule({Action=HideCancelButton.827545C6_7013_4DE1_8E6C_DAEE4C57F54A},{ActionType=3137},{Source=[3]},{Target=HideCancelButton},{CustomActionData=})&lt;BR&gt;ActionStart({Name=AdvertiseLNK2Type.827545C6_7013_4DE1_8E6C_DAEE4C57F54A},{Description=},{Template=})&lt;BR&gt;CustomActionSchedule({Action=AdvertiseLNK2Type.827545C6_7013_4DE1_8E6C_DAEE4C57F54A},{ActionType=3137},{Source=[3]},{Target=AdvertiseLNK2Type},{CustomActionData=})&lt;BR&gt;ActionStart({Name=FixDesktopPNIcon.C76E2E86_AE54_4AF5_997C_63EBB83C7651},{Description=},{Template=})&lt;BR&gt;CustomActionSchedule({Action=FixDesktopPNIcon.C76E2E86_AE54_4AF5_997C_63EBB83C7651},{ActionType=3137},{Source=[3]},{Target=FixDesktopPNIcon},{CustomActionData=C:\Documents and Settings\All Users\Desktop\MyAppPN.lnk2})&lt;BR&gt;End({Checksum=0},{ProgressTotalHDWord=0},{ProgressTotalLDWord=})&lt;BR&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;It's not the same -- possibly even harder to read; but I can work with this versus the VBS.&amp;nbsp; &lt;/P&gt;
&lt;P dir=ltr&gt;As written, if an extra value is found it's appended to the line:&lt;/P&gt;
&lt;P dir=ltr&gt;DialogInfo({Type=0},{Argument=1033}), 1252&lt;/P&gt;
&lt;P dir=ltr&gt;started as&lt;/P&gt;
&lt;P dir=ltr&gt;DialogInfo({Type=[0]},{Argument=[1]}) &lt;/P&gt;
&lt;P dir=ltr&gt;No idea what the 1252 is supposed to be.&lt;/P&gt;
&lt;P dir=ltr&gt;The code has issues: witness the unfilled text boxes in lines such as&lt;/P&gt;
&lt;P dir=ltr&gt;RollbackInfo({Reserved=},{RollbackAction=Rollback},{RollbackDescription=Rolling back action:},{RollbackTemplate=[1]},{CleanupAction=RollbackCleanup},{CleanupDescription=Removing backup files},{CleanupTemplate=File: [1]})&lt;/P&gt;
&lt;P dir=ltr&gt;In these cases the initial line was:&lt;/P&gt;
&lt;P dir=ltr&gt;{RollbackInfo({Reserved=[1]},{RollbackAction=[2]},{RollbackDescription=[3]},{RollbackTemplate=[4]},{CleanupAction=[5]},{CleanupDescription=[6]},{CleanupTemplate=[7]})}&lt;/P&gt;
&lt;P dir=ltr&gt;but the value for [4] and [7] was the characters "[1]".&amp;nbsp; No extra values were found in that row.&amp;nbsp; I'm vaguely vindicated by the fact that the VBS also has [1] for those values, although there are a few cases where the output differs (IconCreate, ActionStart).&amp;nbsp; Hey, I warned you that I was the junior C# guy, right?&lt;/P&gt;
&lt;P dir=ltr&gt;The AAS file is only half of the equation for app publishing via GPO though; next time we'll dig through AD and the following couple of posts will tie it together.&amp;nbsp; &lt;/P&gt;
&lt;P dir=ltr&gt;&amp;nbsp;&lt;/P&gt;Edit: Oh -- and apparently the BLOCKQUOTE tag breaks things with this software. Sorry about that.&lt;/FONT&gt;&lt;/FONT&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102894"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102894" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/102894.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2007/01/06/102894.aspx</guid>
            <pubDate>Sat, 06 Jan 2007 08:13:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/102894.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2007/01/06/102894.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/102894.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/102894.aspx</trackback:ping>
        </item>
        <item>
            <title>App Distribution with Group Policy</title>
            <link>http://geekswithblogs.net/derekf/archive/2006/12/28/102149.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Arial&gt;It looks like this is going to be the first in a series on app distribution with group policy.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;I'm not going to go into the full-on basics of app distribution; if you're in a position to need to know this stuff, you're likely to have already seen GPMC and know how to publish or assign, if you're just curious then there's lots of good info on publishing/assigning apps in group policy out there on the web.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Behind the scenes, however, is interesting (to me, anyway).&amp;nbsp; When you publish or assign an app, not only is an entry created in AD (which we'll get into later) but additionally an AAS (Application Advertisement Script) is created on the Sysvol of the DC,&amp;nbsp;which is replicated to the other domain controllers.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;The path for the AAS file is tucked way up under the Sysvol folder.&amp;nbsp; For now, just&amp;nbsp;click the Advanced button on the Deployment tab for one of your apps.&amp;nbsp; Here's a sample from mine:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Arial&gt;&lt;IMG src="http://www.derekf.com/blog/aaspath.jpg"&gt; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;You'll note that there's a couple of GUIDs in the path to the AAS file.&amp;nbsp; The first is specific to the policy the app is in (which only matters if&amp;nbsp;you've got multiple app policies), the second is specific to this particular app.&amp;nbsp; We'll go into finding the policy GUID in a few days, and with that, we can get AD to tell us the app GUID.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Go ahead and take a look at the associated AAS file in Notepad.&amp;nbsp; It's full of gibberish, with only a few human-readable bits.&amp;nbsp; Up towards the top, if you're paying close attention, you might notice that the first GUID is the MSI's Product Code, followed by the Display Name, and then the next GUID is the MSI's Package Code.&amp;nbsp; (If you're curious, the MSI's Upgrade Code is the last GUID, right before the install path).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;This is not the best way to read the AAS, if you haven't guessed.&amp;nbsp; We'll get to the better ways later.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Now, it's unavoidable in a corporate environment -- some group is going to want their app modified, be it that they want to add files or change an INI entry, or even more substantial changes.&amp;nbsp; There's really four options for putting an updated MSI in production:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Arial&gt;Just overlay the new MSI over the old one and make no changes to policy.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Arial&gt;Remove the app from policy and republish (selecting the "Immediately Remove" option)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Arial&gt;Remove the app from policy and republish (selecting the "Allow Users to Continue" option)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Arial&gt;Overlay the MSI and trigger a Redeploy (right-click, All Tasks, Redeploy Application)&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Most of these have their own problems -- the simple overlay and the Redeploy require that several parts of the package not change.&amp;nbsp; The product and package codes must remain the same; and while I haven't done any testing to verify, we've been told that no shortcuts can have been added or removed nor can any components or features have been added or removed.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;On the other hand, the two "Remove from policy" options have their own issues.&amp;nbsp; While there are no real limits in these cases&amp;nbsp;to the changes that can be made to the MSI, once a package has been removed you've lost the ability to administer that package -- if you remove it today with "Allow Users to Continue", and next week you're given the task of removing it from all workstations, well, good luck to you -- you no longer have that option.&amp;nbsp; For this reason, I'm not much of a fan of these two options.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;There's really a fifth option -- mandatory upgrade of the new package over the old, but we've run into enough problems with that method that it's really not used all that much.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Group Policy uses the MSI name, the Product Code, and the Package Code to identify a given package.&amp;nbsp; If the Package Code is changed and the old GP entry remains, when users attempt to install the package they'll receive this error:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;IMG src="http://www.derekf.com/blog/package.jpg"&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;and obviously they won't be able to install. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Similarly, if the Product Code is changed, users will get this error: &lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Arial&gt;&lt;IMG src="http://www.derekf.com/blog/product.jpg"&gt; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;and in both cases they'll get this error after hitting Cancel:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Arial&gt;&lt;IMG src="http://www.derekf.com/blog/package2.jpg"&gt; &lt;/FONT&gt;
&lt;P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;So in the past, I'd written an app that just looked at those three spots in the AAS file and compared them against the codes&amp;nbsp;in the MSI, letting me know if there was a discrepancy.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;We'll look at a better way to check the AAS file tomorrow.&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102149"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=102149" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/derekf/aggbug/102149.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>derekf</dc:creator>
            <guid>http://geekswithblogs.net/derekf/archive/2006/12/28/102149.aspx</guid>
            <pubDate>Thu, 28 Dec 2006 09:35:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/derekf/comments/102149.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/derekf/archive/2006/12/28/102149.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/derekf/comments/commentRss/102149.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/derekf/services/trackbacks/102149.aspx</trackback:ping>
        </item>
    </channel>
</rss>