<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Chris Jackson's Semantic Consonance : Windows 7</title><link>http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx</link><description>Tags: Windows 7</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Windows 7 Vendor Compatibility Data Now Available in ACT 5.5</title><link>http://blogs.msdn.com/cjacks/archive/2010/01/06/windows-7-vender-compatibility-data-now-available-in-act-5-5.aspx</link><pubDate>Wed, 06 Jan 2010 16:59:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9944642</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9944642.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9944642</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9944642</wfw:comment><description>&lt;p&gt;It’s been a long road to get here, but the checklist is now complete. Vendor data for Windows 7 application compatibility, previously available &lt;a href="http://windows.com/compatibility" target="_blank"&gt;on the web&lt;/a&gt; and as a &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=890e522e-e39e-4278-aebc-186f81e29173&amp;amp;displaylang=en" target="_blank"&gt;downloadable Excel sheet&lt;/a&gt;, is finally integrated into ACT 5.5!&lt;/p&gt;  &lt;p&gt;Here is some information on this data, courtesy of the team:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How many applications do we have data for?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We have data for around 7,000 applications. What is interesting is that there is more work than just 7,000 – each application may map to more than one app ID, and in fact we have data for around 38,000 distinct AppIDs. (Incidentally, if you don’t see data for an application in ACT but it’s on the web, this could be caused by repackaging, by interim releases we are unaware of, or a number of other things. AppIDs are very literal and require perfect fidelity input to deliver comprehensive output.)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How frequently will this data be updated?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Initially, ever 2 weeks, so make sure you sync ever so often to see the latest data. As the vendor input tapers off, we may reduce this in the future.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Will the data have complete parity with the compatibility center?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It’s the same back end, but since we use different AppIDs we have to use heuristics to match between the different AppID schemes. Heuristics, by definition, can be imperfect. Add to this the potential issues above (repackaging, lesser known versions) and this would explain any delta in the data. We’re constantly reviewing our heuristics and improving them, plus we have long term plans to consolidate on a single AppID scheme.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Will I see compatibility status for 64-bit applications?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Today, it’s just 32-bit status, as that is what ACT 5.5 supports. ACT 6.0 will support 64-bit Windows and include 64-bit compatibility status. It should be released later this year.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;Congratulations to the team for achieving this long-awaited milestone! I know I have already synced up my database.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9944642" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/ACT+5.5/default.aspx">ACT 5.5</category></item><item><title>Flexera Software Webinar Now Available Online: Best Practices for Windows 7 Application Compatibility</title><link>http://blogs.msdn.com/cjacks/archive/2009/12/28/flexera-software-webinar-now-available-online-best-practices-for-windows-7-application-compatibility.aspx</link><pubDate>Mon, 28 Dec 2009 15:02:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9941593</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9941593.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9941593</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9941593</wfw:comment><description>&lt;p&gt;A couple of weeks ago, I had a chance to sit in on a webinar delivered by Flexera Software and chat about Windows 7 Application Compatibility. The recording of the webinar is now online and available here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr?mc=eml-flw"&gt;http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr?mc=eml-flw&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9941593" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Why don’t I see any data for Vendor Assessment for Windows 7 in ACT 5.5?</title><link>http://blogs.msdn.com/cjacks/archive/2009/12/22/why-don-t-i-see-any-data-for-vendor-assessment-for-windows-7-in-act-5-5.aspx</link><pubDate>Tue, 22 Dec 2009 18:03:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9940154</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9940154.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9940154</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9940154</wfw:comment><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/cjacks/archive/2009/11/17/windows-7-application-compatibility-list-for-it-professionals.aspx" target="_blank"&gt;A few weeks ago, I spoke about how our information on vendor data was slowly making it through the channel&lt;/a&gt;, beginning with the &lt;a href="http://windows.com/compatibility" target="_blank"&gt;compatibility center&lt;/a&gt; (complete), moving on to the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=890e522e-e39e-4278-aebc-186f81e29173&amp;amp;displaylang=en" target="_blank"&gt;downloadable Application Compatibility List for IT Pros&lt;/a&gt; (complete), and finally getting to &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=24DA89E9-B581-47B0-B45E-492DD6DA2971&amp;amp;displaylang=en" target="_blank"&gt;ACT&lt;/a&gt;. I suggested, “The target date for this integration is mid-December 2009.” To call December 22 “mid-December” is already stretching it, and yet it’s still not showing up in ACT. What gives?&lt;/p&gt;  &lt;p&gt;Well, let’s talk a little bit about the data and how it has to move through the system. In the end, it all comes from the same database. The compat center, the downloadable list, the data that feeds the upgrade advisor – all from the same source. What is taking so long to turn on the spigot for ACT?&lt;/p&gt;  &lt;p&gt;Well, the big challenge is data transformation. First, the App ID has to be translated. The 3 live services all use a new algorithm for determining an application ID. ACT hopes to transition to use this new algorithm in the next version, but it’s one of those “running in place” changes where, after spending a lot of time and money, the end result looks identical to the user, so it’s difficult to justify rushing the transition (particularly since invalidating an existing inventory full of old App IDs is a terrible idea, so the application will need to support both old and new, and be able to differentiate between them). That translation needs to be automated so it can run in perpetuity, and that process has to be build. Then, the web service that feeds ACT is the old version (v1) while the others are using a much newer version (v4), so the old web service interface has to be modified to leverage the new database feeding it. So, there are two feats of engineering that need to be implemented, tested, and proven at scale.&lt;/p&gt;  &lt;p&gt;We’re still hoping to have this done the first week of January, but vacations and winter colds are making this more challenging. Rest assured, this data is coming and we are terrible sorry for any inconvenience the delay is causing – we really do want the data to be accessible and convenient and are not neglecting the value this has to customers.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9940154" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/ACT+5.5/default.aspx">ACT 5.5</category></item><item><title>Windows 7 Debugging Demo: Troubleshooting the Broken Microsoft Time Zone Utility</title><link>http://blogs.msdn.com/cjacks/archive/2009/12/16/windows-7-debugging-demo-troubleshooting-the-broken-microsoft-time-zone-utility.aspx</link><pubDate>Wed, 16 Dec 2009 20:12:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937842</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9937842.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9937842</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9937842</wfw:comment><description>&lt;p&gt;Earlier today, I received this request from a customer:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;This (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=07fb0bd8-f390-458d-a629-6f0258ac7cdf"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=07fb0bd8-f390-458d-a629-6f0258ac7cdf&lt;/a&gt;) is a .NET 1.1 app and I have installed .NET 1.1 SP1 on Windows 7 32-bit and all .NET 1.1 SP1 security patches but it doesn't run. Gives me this error: An internal error has occurred: Object reference not set to an instance of an object&amp;quot; and then it quits.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Always being up for a challenge, I decided to have a look and see what wasn’t working. Reproducing the error is pretty straightforward. Just run the app – it’ll gladly crash for you. But the question is, why? And can you fix it?&lt;/p&gt;  &lt;p&gt;If you hit this with a debugger, you’ll find the following stack when you hit an AV:&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Consolas"&gt;0:000&amp;gt; !dumpstack -ee     &lt;br /&gt;Current frame: (MethodDesc 0x2098d28 +0x1c SystemTimeZone.ConvertToTimeZoneInfoStructure)      &lt;br /&gt;ChildEBP RetAddr&amp;#160; Caller,Callee      &lt;br /&gt;0018f4f4 0206d4ab (MethodDesc 0x2098d08 +0x43 SystemTimeZone.ToLocalTime)      &lt;br /&gt;0018f55c 0206cfc0 (MethodDesc 0x2098cd8 +0x38 SystemTimeZone.Convert)      &lt;br /&gt;0018f574 0206a484 (MethodDesc 0x2e5680 +0x15c frmMain.ShowCurrentTimes_Click)      &lt;br /&gt;0018f5d8 02067686 (MethodDesc 0x2e56d0 +0x446 frmMain.frmMain_Load)      &lt;br /&gt;0018f61c 02060365 (MethodDesc 0x2e5620 +0x2ed frmMain.Main)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now, you could take a stab at this with SOS and start pulling out objects, but I didn’t believe that this would be the easiest way to solve the problem. Instead, I decided to reverse engineer the code and have a look. If you take a peek at the structure you’re trying to create from the SystemTimeZone class, you’ll find where the instance of the time zone came from – the code was rampaging through the registry looking for it. Here’s the method in question:&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Consolas"&gt;public TimeZoneList()     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; m_TZHash = new Hashtable();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; m_TZList = new ArrayList();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RegistryKey key = Registry.LocalMachine.OpenSubKey(@&amp;quot;SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string[] subKeyNames = key.GetSubKeyNames();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Type t = typeof(TZIStructure);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; int num2 = Marshal.SizeOf(t);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; int num3 = subKeyNames.Length - 1;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; for (int i = 0; i &amp;lt;= num3; i++)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RegistryKey key2 = key.OpenSubKey(subKeyNames[i]);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SystemTimeZone zone = new SystemTimeZone();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SystemTimeZone zone2 = zone;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone2.DaylightName = StringType.FromObject(key2.GetValue(&amp;quot;Dlt&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone2.DisplayName = StringType.FromObject(key2.GetValue(&amp;quot;Display&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone2.Index = IntegerType.FromObject(key2.GetValue(&amp;quot;&lt;strong&gt;Index&lt;/strong&gt;&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone2.MapId = StringType.FromObject(key2.GetValue(&amp;quot;MapID&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone2.StandardName = StringType.FromObject(key2.GetValue(&amp;quot;Std&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone2.Name = key2.Name.Substring(key2.Name.LastIndexOf(@&amp;quot;\&amp;quot;) + 1);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone2 = null;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; byte[] buffer = (byte[]) key2.GetValue(&amp;quot;TZI&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; key2.Close();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if ((buffer != null) &amp;amp;&amp;amp; (buffer.Length &amp;gt;= num2))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IntPtr ptr = handle.AddrOfPinnedObject();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; zone.TZI = (TZIStructure) Marshal.PtrToStructure(ptr, t);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; handle.Free();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!m_TZHash.Contains(zone.Index))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_TZHash.Add(zone.Index, zone);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; m_TZList.Add(zone);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; key.Close();      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;If you spend enough time with the !do command, you can eventually stumble upon the answer, but the easier approach is, again, to stay out of the debugger and leverage your favorite search engine. Here’s a KB article that points out the problem:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/935369" href="http://support.microsoft.com/kb/935369"&gt;http://support.microsoft.com/kb/935369&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Relevant information: “The Index registry value does not exist in Windows Vista and in Windows Server 2008.”&lt;/p&gt;  &lt;p&gt;Aha. See the source code above? It wants that value, and it’s not there. Root cause found.&lt;/p&gt;  &lt;p&gt;Now, on to solutions.&lt;/p&gt;  &lt;p&gt;First of all, I wonder if you need a solution at all. If you click on the clock, and then click on Change date and time settings… you will get to the Date and Time control panel. Click on the Additional Clocks tab, and you can add 2 additional clocks for 2 new time zones. If you need more, you can always use Gadgets to fill the rest of your needs. So, for most people, this should provide a built-in solution to the problem – you don’t need the app any more because the OS provides 2 solutions already.&lt;/p&gt;  &lt;p&gt;But, if you really really love that particular app, you could always copy that piece of the registry from Windows XP onto your Windows 7 computer, drop it in a new place inside of the registry, and then use the VirtualRegistry shim to redirect that app’s checks of the timezone portion of the registry to the copy you brought over.&lt;/p&gt;  &lt;p&gt;Special thanks to my friend Gov for pointing me to the KB article, and for coming up with the VirtualRegistry workaround idea.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937842" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Flexera Software Webinar: Best Practices for Windows 7 Application Compatibility</title><link>http://blogs.msdn.com/cjacks/archive/2009/12/15/flexera-software-webinar-best-practices-for-windows-7-application-compatibility.aspx</link><pubDate>Tue, 15 Dec 2009 16:33:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9937120</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9937120.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9937120</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9937120</wfw:comment><description>&lt;p&gt;&lt;a href="http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr" target="_blank"&gt;Are your business-critical applications compatible with Windows 7? Join Microsoft's &amp;quot;App Compat Guy&amp;quot; Chris Jackson to learn best practices for how IT teams are resolving Windows 7 application compatibility issues. Hear about his experiences with early Windows 7 adopters, including the most common application compatibility issues and their root causes. Tips in this webinar will help your IT team minimize risk and make a smoother move to Windows 7.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr" target="_blank"&gt;Webinar Details&lt;/a&gt;       &lt;br /&gt;&lt;/strong&gt;&lt;a href="http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr" target="_blank"&gt;Thursday, December 17&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr" target="_blank"&gt;12pm EST (9am PST, 5pm GMT)&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;One curious observation I have made while doing app compat work over the past few years: The ownership of the project is assigned to the packaging team more so than any other team. Perhaps that’s because it’s the only centralized group dealing with every application, or perhaps it’s because installation failures on the new OS are the first things you notice – the rationale varies. But regardless, the team responsible for packaging definitely is an extremely interested party, if not the outright owner of the project.&lt;/p&gt;  &lt;p&gt;As a result, when I sat down for dinner with several execs from Flexera Software (makers of InstallShield and AdminStudio, among other things), they expressed this as an area of great concern for their customers. So, in between our discussion of which tapas was the tastiest (I assure you, there was some extremely tasty tapas), we were brainstorming how we can better work together to help people who are interested in packaging be more successful when an app compat project comes along.&lt;/p&gt;  &lt;p&gt;One idea? Let’s work on a webinar together. Flexera has a pretty successful webinar series, so let’s just partner up on one of those. So, on Thursday, December 17, 2009 at 11:00 am Central, we’ll be doing that. It will be relatively quick and will be presented at an overview level, so if you’re looking for a debugging deep dive this probably isn’t your best bet, but one thing it will emphatically not be is marketing speak. If this perspective is useful to you, come and join us. Feel free to ask the hardest, nastiest questions you can think of!&lt;/p&gt;  &lt;p&gt;&lt;a title="http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr" href="http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr"&gt;http://mktg.flexerasoftware.com/mk/get/BPWin7CompatApp_wbnr&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9937120" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>How to Hack your Application Compatibility Toolkit 5.5 (ACT 5.5) Database to Locate 16-bit Files in your Application Inventory</title><link>http://blogs.msdn.com/cjacks/archive/2009/12/08/how-to-hack-your-application-compatibility-toolkit-5-5-act-5-5-database-to-locate-16-bit-files-in-your-application-inventory.aspx</link><pubDate>Tue, 08 Dec 2009 22:02:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9934290</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9934290.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9934290</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9934290</wfw:comment><description>&lt;p&gt;(Wow, I’m doing a lot more posting today than normal. Things kind of piled up while I was on leave.)&lt;/p&gt;  &lt;p&gt;There is a ton of activity going on in the world regarding Windows 7 deployments, and one of the hottest topics we’re finding is x64. People are very interested in moving to the 64-bit version of the operating system, but one obvious question is, will my applications be broken?&lt;/p&gt;  &lt;p&gt;The next version of the Application Compatibility Toolkit, ACT 6.0, is scheduled to have far more robust x64 support. (It’s scheduled to support it at all, which is already a bonus.) But what about in the interim?&lt;/p&gt;  &lt;p&gt;First of all, there is the &lt;a href="http://technet.microsoft.com/en-us/library/cc766109(WS.10).aspx" target="_blank"&gt;Setup Analysis Tool&lt;/a&gt;. This will detect 16-bit binaries (probably a problem for 64-bit Windows, unless setup is detecting the bitness of the OS and dropping file appropriately) and driver installation (possibly a problem for 64-bit Windows, unless setup is detecting the bitness of the OS and dropping files appropriately). But this requires a fair amount of work to get configured and running, and it also means that you have to have the setup files. Depending on how managed your environment is, that may be a problem.&lt;/p&gt;  &lt;p&gt;If you’re the sort that doesn’t mind undocumented secrets, I’ll let you in on one: ACT already collects the bitness of the files it finds in an inventory scan, it just doesn’t surface that in the UI today. So, how can you view this information? Why, hack the database of course. My SQL skills are so rusty these days I’m beyond embarrassed of what I crufted together, but here is a query I hacked up to display all of the files that are neither 32-bit (user mode 32-bit is probably OK) nor 64-bit (definitely OK) in your ACT database:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;USE ACT55     &lt;br /&gt;GO &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;SELECT DISTINCT Applications.appName, Static_App_Properties.fileName, fileModuleType &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;FROM Static_App_Properties     &lt;br /&gt;INNER JOIN Application_Instance_Files      &lt;br /&gt;ON Static_App_Properties.identity_hash = Application_Instance_Files.filePropertyID      &lt;br /&gt;INNER JOIN Applications      &lt;br /&gt;ON Application_Instance_Files.appID = Applications.identity_hash &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;WHERE fileModuleType&amp;lt;&amp;gt;'32BIT' AND fileModuleType&amp;lt;&amp;gt;'64BIT' AND propertyType='File' &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;ORDER BY appName     &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The schema is, as always, undocumented and subject to change, but I have found this helpful in a few scenarios to quickly zero in on apps to specifically test on 64-bit when targeting a mixed environment. I suspect you’ll have to do less hacking with ACT 6.0.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9934290" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/ACT+5.5/default.aspx">ACT 5.5</category></item><item><title>Windows 7 Application Compatibility List for IT Professionals</title><link>http://blogs.msdn.com/cjacks/archive/2009/11/17/windows-7-application-compatibility-list-for-it-professionals.aspx</link><pubDate>Tue, 17 Nov 2009 15:21:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9923613</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9923613.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9923613</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9923613</wfw:comment><description>&lt;p&gt;It’s finally here!&lt;/p&gt;  &lt;p&gt;We released the Windows 7 Compatibility Center a few weeks ago. This lets you look up one application at a time. You can find that at &lt;a href="http://windows.com/compatibility"&gt;http://windows.com/compatibility&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Today, we have a downloadable list indicating vendor support. If you want to write some automated matching against your list of application, you can use this – it is an Excel download of all known information from vendors. You can find that at &lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=890e522e-e39e-4278-aebc-186f81e29173&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=890e522e-e39e-4278-aebc-186f81e29173&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=890e522e-e39e-4278-aebc-186f81e29173&amp;amp;displaylang=en&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The final step will be to have this information integrated directly into ACT. The target date for this integration is mid-December 2009. We’re getting there! We’re also planning to keep this data updated bi-weekly.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9923613" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>How to Remove the RC Designation from the Windows 7 Reports in ACT 5.5</title><link>http://blogs.msdn.com/cjacks/archive/2009/11/06/how-to-remove-the-rc-designation-from-the-windows-7-reports-in-act-5-5.aspx</link><pubDate>Fri, 06 Nov 2009 20:56:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918803</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9918803.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9918803</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9918803</wfw:comment><description>&lt;p&gt;We shipped ACT 5.5 back in April 2009, several months before we shipped Windows 7. Helpfully (I guess) we decided to label it Windows 7 RC in the UI so you could specifically track your testing against the release candidate. We had the idea that we could update this via our web service, so that once we hit RTM we could just push out an update to modify this.&lt;/p&gt;  &lt;p&gt;And apparently we forgot to turn this little bit of code on.&lt;/p&gt;  &lt;p&gt;So, now we have a bunch of folks around the world who wonder why ACT seems to be in a beta phase and not ready for Windows 7 RTM.&lt;/p&gt;  &lt;p&gt;Well, it is ready for Windows 7 RTM, and I bet some of you would like it to look ready. We’re really sorry we can’t do that using the mechanisms we planned to use, so I figured I’d let you in on the secret to the planned update.&lt;/p&gt;  &lt;p&gt;We were going to update 2 fields in the database.&lt;/p&gt;  &lt;p&gt;So, if you want your ACT UI to look ready for the &lt;strike&gt;future&lt;/strike&gt; present, you can run this bit of SQL:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;UPDATE dbo.OS     &lt;br /&gt;SET osName='Windows 7'      &lt;br /&gt;WHERE osName='Windows 7 RC'      &lt;br /&gt;GO      &lt;br /&gt;UPDATE dbo.OS      &lt;br /&gt;SET osName='Windows Server 2008 R2'      &lt;br /&gt;WHERE osName='Windows Server 2008 R2 RC'      &lt;br /&gt;GO&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Enjoy, and sorry for the inconvenience.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918803" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/ACT+5.5/default.aspx">ACT 5.5</category></item><item><title>Carrying Custom Application Sound Events Between Sound Schemes in Windows 7</title><link>http://blogs.msdn.com/cjacks/archive/2009/10/27/carrying-custom-application-sound-events-between-sound-schemes-in-windows-7.aspx</link><pubDate>Wed, 28 Oct 2009 04:30:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9913886</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9913886.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9913886</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9913886</wfw:comment><description>&lt;p&gt;Today, I just might ruffle a few feathers by doing so, but I figured I’d go through and demonstrate the process of reversing some incompletely documented stuff in Windows in order to fix a problem that was causing me some personal pain.&lt;/p&gt;  &lt;p&gt;Specifically, I’m going to talk about sound schemes in Windows 7. With Windows Vista, we had only 1 sound scheme (unless you bought Ultimate, in which case the additional sound schemes were provided as Ultimate Extras). With Windows 7, you get multiple sound schemes.&lt;/p&gt;  &lt;p&gt;And for a while, I was terrified of using any of them other than the one I had originally selected.&lt;/p&gt;  &lt;p&gt;You see, every time I would change the sound scheme, I would lose sounds in a number of my other programs. Pretty much anything that wasn’t Windows. I like my computer making little beeps and boops all the time (seriously – I still add in the Office 97 sounds, because I like the audio feedback I get when deleting, moving copying – it feels bizarre not to have it after more than a decade of always hearing it).&lt;/p&gt;  &lt;p&gt;When we released a whole bunch of new themes for Windows 7 on the day we reached General Availability, I had reached the last straw. The themes all changed my sound scheme, and I don’t want to lose the sound from my other programs thank you very much. So, I set out to figure out how to fix that.&lt;/p&gt;  &lt;p&gt;Here’s a blog post that described how to set up the sounds:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/larryosterman/archive/2006/01/24/517183.aspx" target="_blank"&gt;A Peek Behind the Beep&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Put sounds in .current, eh? Well, time to go spelunking. For the sounds that do switch around, I notice more in the registry than just .Current. I notice that each event not only has a .current subkey, it also has a subkey with the name of each of the sound schemes. So, it seems likely that everyone who adds a new set of application sounds would only affect the current sound scheme, and as soon as you changed it, those settings would go away!&lt;/p&gt;  &lt;p&gt;A quick check with process monitor would confirm that:&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Consolas"&gt;8:08:59.2736148 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegOpenKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\Delta&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Desired Access: Maximum Allowed, Granted Access: All Access     &lt;br /&gt;8:08:59.2736558 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegQueryValue&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\Delta\(Default)&amp;#160;&amp;#160;&amp;#160; BUFFER OVERFLOW&amp;#160;&amp;#160;&amp;#160; Length: 144      &lt;br /&gt;8:08:59.2737043 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegQueryValue&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\Delta\(Default)&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Type: REG_SZ, Length: 172, Data: C:\Program Files (x86)\Microsoft Office Communicator\Media\COMMUNICATOR_appinvite.wav      &lt;br /&gt;8:08:59.2741839 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegCloseKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\Delta&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;8:09:00.4227580 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegOpenKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Desired Access: Maximum Allowed, Granted Access: All Access      &lt;br /&gt;8:09:00.4227946 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegQueryKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Query: HandleTags, HandleTags: 0x0      &lt;br /&gt;8:09:00.4228254 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegCreateKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\Delta&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Desired Access: Set Value      &lt;br /&gt;8:09:00.4228632 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegSetValue&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\Delta\(Default)&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Type: REG_SZ, Length: 172, Data: C:\Program Files (x86)\Microsoft Office Communicator\Media\COMMUNICATOR_appinvite.wav      &lt;br /&gt;8:09:00.4229075 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegCloseKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\Delta&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;8:09:00.4229383 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegQueryKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Query: HandleTags, HandleTags: 0x0      &lt;br /&gt;8:09:00.4229707 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegCreateKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\.current&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Desired Access: Set Value      &lt;br /&gt;8:09:00.4230081 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegSetValue&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\.Current\(Default)&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; Type: REG_SZ, Length: 172, Data: C:\Program Files (x86)\Microsoft Office Communicator\Media\COMMUNICATOR_appinvite.wav      &lt;br /&gt;8:09:00.4230401 PM&amp;#160;&amp;#160;&amp;#160; rundll32.exe&amp;#160;&amp;#160;&amp;#160; 4796&amp;#160;&amp;#160;&amp;#160; RegCloseKey&amp;#160;&amp;#160;&amp;#160; HKCU\AppEvents\Schemes\Apps\Communicator\COMMUNICATOR_appinvite\.Current&amp;#160;&amp;#160;&amp;#160; SUCCESS&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Yes, indeed – when you change the sound scheme, you copy the values over from the subkey with the new scheme name into the .current key. And none of the program sounds from external programs contained subkeys for each (or any) of the schemes!&lt;/p&gt;  &lt;p&gt;So, I’m thinking I’ve reversed the secret to carrying my program sounds over from scheme to scheme – could it be that simple? Only one way to find out – populate them! But, if there were so few that I could do so easily by hand, then I wouldn’t be reversing this stuff in the first place. So, it looks like it’s time for a PowerShell Script! Here’s what I wrote:&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Consolas"&gt;foreach ($app in Get-ChildItem -Path &amp;quot;HKCU:\AppEvents\Schemes\Apps&amp;quot;)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (($app.PSChildName -ne &amp;quot;.Default&amp;quot;) -and ($app.PSChildName -ne &amp;quot;Explorer&amp;quot;) -and ($app.PSChildName -ne &amp;quot;sapisvr&amp;quot;))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach ($events in Get-ChildItem -Path $app.PSPath)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $event = $events.PSPath      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach ($soundSchemes in Get-ChildItem -Path &amp;quot;HKCU:\AppEvents\Schemes\Names&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $soundScheme = $soundSchemes.PSChildName      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (($soundScheme -ne &amp;quot;.Default&amp;quot;) -and ($soundScheme -ne &amp;quot;.None&amp;quot;))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $defaultPath = $event + &amp;quot;\.current&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $newPath = $event + &amp;quot;\&amp;quot; + $soundScheme      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (Test-Path $newPath)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Remove-Item -Path $newPath      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Copy-Item -Path $defaultPath -Destination $newPath&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I ran this script, and tried changing my sound scheme. Sure enough, it worked! I was able to swap out my sound schemes, and the other applications which extend the sound scheme mechanism in Windows still generate the sounds which makes their use so much more satisfying! (Or, in the case of Communicator, it’s downright critical to the way I use the application.) Hooray!&lt;/p&gt;  &lt;p&gt;Now, this is kind of a klugy workaround, which depends on my reversing and guessing correctly on a couple of things. What could we do differently? Well, ideally the application developer would have enumerated the schemes, which is something they wouldn’t have had to do with Windows Vista (except in the case of Ultimate Extras), and added their sound events to each of the schemes. But, it’s a little bit late for that now – these apps already exist. The sound schemes already exit, and there is no API we can intercept – the apps are just writing to the registry. So, if we wanted to do something about this within Windows, we’d have to do something proactive to mitigate the issue with other programs in response to a sound scheme change event. That’s getting a little bit harder to argue for in a service pack, but you never know. It’s worth a try at least.&lt;/p&gt;  &lt;p&gt;For now, you can use my workaround, and carry your sounds around with you from scheme to scheme. Happy dinging!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913886" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Windows 7 Compatibility Center Live on the Web</title><link>http://blogs.msdn.com/cjacks/archive/2009/10/21/windows-7-compatibility-center-live-on-the-web.aspx</link><pubDate>Wed, 21 Oct 2009 16:45:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9910716</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9910716.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9910716</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9910716</wfw:comment><description>&lt;p&gt;Hooray – I can stop pasting &lt;a href="http://blogs.msdn.com/cjacks/archive/2009/09/07/faq-when-is-the-application-compatibility-list-currently-focused-on-windows-vista-going-to-be-updated-for-windows-7.aspx" target="_blank"&gt;this link&lt;/a&gt; into emails!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/windows/compatibility/en-us/default.aspx" target="_blank"&gt;The Windows 7 Compatibility Center is now live.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9910716" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Using the uiAccess attribute of requestedExecutionLevel to Improve Applications Providing Remote Control of the Desktop</title><link>http://blogs.msdn.com/cjacks/archive/2009/10/15/using-the-uiaccess-attribute-of-requestedexecutionlevel-to-improve-applications-providing-remote-control-of-the-desktop.aspx</link><pubDate>Fri, 16 Oct 2009 01:47:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907916</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9907916.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9907916</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9907916</wfw:comment><description>&lt;p&gt;I’ve run into this exact same problem 3 times now in one week, so I figure that probably doesn’t bode well and I should attempt to do something about it.&lt;/p&gt;  &lt;p&gt;With 3 different pieces of software (one of them ours), the remote control functionality is imperfectly implemented. Let’s see if this sounds familiar to anyone. You are the helpdesk. You attempt to connect to a user’s desktop. You have to elevate an application. When you do, you (the helpdesk who actually has the password) doesn’t see the UAC dialog – instead, the end user (who does not have the password) does. Even if you decide to give the user the password (it happens), you then can’t control or even see the elevated application.&lt;/p&gt;  &lt;p&gt;Kind of makes it hard to be a helpdesk when that happens.&lt;/p&gt;  &lt;p&gt;Here are the 3 solutions that I have seen to this problem:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Do nothing. That’s what our solution did. It just failed every time elevation was involved.&lt;/li&gt;    &lt;li&gt;Install a service. That’s what company X did. It requires the user to know an admin password, and that’s a problem for my customers&lt;/li&gt;    &lt;li&gt;Run the application elevated. That’s what company Y did. It requires the user to know an admin password (a problem with my customers), and also won’t allow you to interact with any windows running at System integrity level (so an incomplete solution)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here’s what I wish all 3 had done:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Manifest with uiAccess = true&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now, most people don’t really understand what this is for, and the UAC manifest is typically just a copy/paste affair. But it pays for the remote desktop developer to pay attention to it. For any regular piece of software, you generally want to stay away from it – it’s dangerous, and sidesteps a significant security feature (UIPI). But if you are remoting the desktop, it’s precisely what you want – you need to be able to see everything!&lt;/p&gt;  &lt;p&gt;It’s dangerous enough, in fact, that we won’t allow you to set it without digitally signing your application. By default, you also have to have it installed in a secure location (such as Program Files). You can set a group policy to not require a secure location, but there is no option to not require a signature.&lt;/p&gt;  &lt;p&gt;However, once set up, it’s really powerful. You’ll be able to remote every possible kind of window – any integrity level at all. No more blank, unresponsive screens. Everything comes across, regardless of integrity level.&lt;/p&gt;  &lt;p&gt;You’ll also be able to leverage the group policy that lets you prompt NOT on the secure desktop if you are a UIAccess application – that way you don’t have to lose the defense in depth of using the secure desktop for normal elevation, but you also avoid writing code to remote the secure desktop when your remote desktop application is running.&lt;/p&gt;  &lt;p&gt;All in all, you are just full of win.&lt;/p&gt;  &lt;p&gt;Now, it’s my job to fix up apps that are written suboptimally, so you may be wondering how I did getting these working?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Our application, rather conveniently, used an external manifest. All I had to do was open up the manifest in Notepad, and type four characters (t-r-u-e) in the uiAccess attribute. Done. Now it works great. (Of course, everyone who downloads it will download a new broken one, so they’ll have to text edit it too – clearly we want to work with the team that makes this to fix it on their end, but you aren’t stuck – you can fix it without depending on anyone else.)&lt;/li&gt;    &lt;li&gt;Company x, the one that used a service (claiming of course that it was UACs fault that they had to do this)? I can’t fix it. They used an internal manifest, which has precedence over any external one I might lay down there. I could extract that manifest with mt.exe, edit it, and then re-inject it, but then I invalidate the digital signature. Remember that this is a non-optional requirement for a uiAccess app! So, there is nothing I can do. I’m trying to contact the vendor.&lt;/li&gt;    &lt;li&gt;Company y, the one that elevates to admin – this one I didn’t have time to examine – they do a “just in time” install and uninstall, so I couldn’t explore the manifest, but since it’s so transitive it’d be hard for me to do much anyway that would last.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Anyone writing desktop remoting applications, please consider using this. And feel free to contact me if you have questions. I would be delighted to help you.&lt;/p&gt;  &lt;p&gt;For the record, here is the corrected manifest for the one I was able to fix:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;lt;?xml version='1.0' encoding='UTF-8' standalone='yes'?&amp;gt;     &lt;br /&gt;&amp;lt;assembly xmlns='urn:schemas-microsoft-com:asm.v1'      &lt;br /&gt;&amp;#160;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;manifestVersion='1.0'&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;assemblyIdentity      &lt;br /&gt;&amp;#160;&amp;#160; version=&amp;quot;1.0.0.0&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160; processorArchitecture=&amp;quot;X86&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160; name=&amp;quot;Microsoft.FixedUpApp.SupportConsole&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160; type=&amp;quot;win32&amp;quot;      &lt;br /&gt;&amp;#160; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;description&amp;gt;Fixed Up App&amp;lt;/description&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;dependency&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;dependentAssembly&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;assemblyIdentity type='win32'      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; name='Microsoft.Windows.Common-Controls'      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; version='6.0.0.0'      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font size="2" face="Consolas"&gt;processorArchitecture='x86'     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; publicKeyToken='6595b64144ccf1df'      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; language='*'      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/dependentAssembly&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/dependency&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;trustInfo xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v3&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;security&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;requestedPrivileges&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;requestedExecutionLevel level=&amp;quot;asInvoker&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; uiAccess=&amp;quot;&lt;strong&gt;&lt;font color="#ff0000"&gt;true&lt;/font&gt;&lt;/strong&gt;&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/requestedPrivileges&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/security&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/trustInfo&amp;gt;       &lt;br /&gt;&amp;lt;/assembly&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907916" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/UAC/default.aspx">UAC</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Understanding the AdditiveRunAsHighest Flag on Windows 7</title><link>http://blogs.msdn.com/cjacks/archive/2009/10/08/understanding-the-additiverunashighest-flag-on-windows-7.aspx</link><pubDate>Thu, 08 Oct 2009 23:32:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9905147</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9905147.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9905147</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9905147</wfw:comment><description>&lt;p&gt;This post corrects an error from a previous post.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cjacks/archive/2009/04/28/changes-to-the-operating-system-layers-compatibility-modes-in-windows-7.aspx" target="_blank"&gt;Back when I was explaining the changes in the operating system layers for Windows 7&lt;/a&gt;, I incorrectly described the AdditiveRunAsHighest. Since RunAsHighest is already confusing enough, and AdditiveRunAsHighest is even more confusing (even I got it wrong), I want to make sure I actually get it right (and apologize for not having done so before).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;AdditiveRunAsHighest requests that the application receives the RunAsHighest flag if and only if nobody else has requested a higher level of elevation.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;That means we will overrule a manifest if that manifest is asInvoker, but we will not overrule a manifest if that manifest is requireAdministrator. It also means we will overrule a layer if that layer requests RunAsInvoker, but we will not overrule a layer if that layer requests RunAsAdministrator.&lt;/p&gt;  &lt;p&gt;In short, it means that this flag will &lt;strong&gt;only be used to increase your level of elevation&lt;/strong&gt; (to highestAvailable) and will &lt;strong&gt;never be used to decrease it&lt;/strong&gt; (from requireAdministrator).&lt;/p&gt;  &lt;p&gt;The reason why this flag exists? Setups. If we think you are a setup, then the setup detection logic applies the VistaSetup layer, which has (as you might imagine) RunAsAdministrator. We don’t want setups to fail for every standard user out there – they still need to prompt. So, this layer will not cause standard users to stop seeing prompts for setups (or manifested apps for that matter). If we had used the existing RunAsHighest flag, then it would have broken setup detection for standard users – and we love our standard users.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9905147" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Shims/default.aspx">Shims</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/UAC/default.aspx">UAC</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>The Curious Case of the Redundant UAC Policies</title><link>http://blogs.msdn.com/cjacks/archive/2009/10/06/the-curious-case-of-the-redundant-uac-policies.aspx</link><pubDate>Tue, 06 Oct 2009 23:22:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9903942</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9903942.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9903942</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9903942</wfw:comment><description>&lt;p&gt;One of the unfortunate consequences of actually having to ship your software at some point is that you have to make some compromises along the way. The decisions you make can vary based on the time you are called upon to make them. As frustrating as that is for somebody who is trying to understand the system by trying to reverse how we make decisions, it remains a fact of life.&lt;/p&gt; &lt;p&gt;Case in point: for anybody who has explored the updates to the User Account Control (UAC) policies on Windows 7, you may have noticed that there are multiple policies which appear to govern the exact same thing.&lt;/p&gt; &lt;p&gt;In fact, they do govern the exact same thing.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode&lt;/strong&gt; has the following options:&lt;/p&gt; &lt;p&gt;Elevate Without Prompting &lt;br&gt;Prompt for credentials &lt;strong&gt;on the secure desktop&lt;/strong&gt; &lt;br&gt;Prompt for consent &lt;strong&gt;on the secure desktop&lt;/strong&gt; &lt;br&gt;Prompt for credentials &lt;br&gt;Prompt for consent &lt;br&gt;Prompt for consent for non-Windows binaries &lt;em&gt;(default)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;User Account Control: Behavior of the elevation prompt for standard users&lt;/strong&gt; has the following options:&lt;/p&gt; &lt;p&gt;Automatically deny elevation requests &lt;br&gt;Prompt for credentials &lt;strong&gt;on the secure desktop &lt;br&gt;&lt;/strong&gt;Prompt for credentials &lt;em&gt;(default)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;At the same time, you’ll find a policy that configures the secure desktop:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;User Account Control: Switch to the secure desktop when prompting for elevation&lt;/strong&gt; &lt;em&gt;(enabled by default)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;What’s going on here – aren’t these directly overlapping?&lt;/p&gt; &lt;p&gt;Well, first let’s help you sort out how to use the policies, next we’ll explain why there are two ways to configure the same thing, and finally we’ll chart out the outcome to give you the easy answers.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;A configuration request to use the secure desktop always wins.&lt;/strong&gt; Whether you configure the admin policy, the standard user policy, or the secure desktop policy, any vote for the secure desktop will cause Windows to use the secure desktop.&lt;/p&gt; &lt;p&gt;So, what happened?&lt;/p&gt; &lt;p&gt;While we were re-doing UAC to make it “less prompty” for Windows 7, we were changing a number of things. We added the ability to exclude Windows binaries. We added a slider instead of an on-off switch. While you are mucking around anyway, you may think, “what if I wanted to have different secure desktop behavior for my standard users than I do for my administrators?” You can’t with only one policy. And it doesn’t take that much additional effort to add a couple of additional options. But you’ll note that there is no secure desktop option for Prompt for consent for non-Windows binaries.&lt;/p&gt; &lt;p&gt;We’d left the secure desktop policy there for application compatibility reasons, but we didn’t use it.&lt;/p&gt; &lt;p&gt;So, we’re happily moving along, when we eventually noticed that there were some accessibility issues in some scenarios when not using the secure desktop, so we needed to have an option to make the “less prompty, but on the secure desktop” setting which, as you can see, doesn’t exist.&lt;/p&gt; &lt;p&gt;Now, if you think about it as if it were your own software, how long would it take you to fix it? It’d take you no time at all to add a new option to the dropdown. You can probably come up with a very easy way to implement the change in consent.exe for reading that policy as well.&lt;/p&gt; &lt;p&gt;But Windows is a complex place. That’s not all you’d have to do. What about the customer experience improvement program? You have a finite, already defined amount of room to feed back all of your configuration and data here. If you change your compression algorithm to incorporate this new option, then you impact all kinds of teams. Could you do it? Sure. But it was at a point in the process when you stop making “blue sky” designs that are the best implementation, and instead fall in the category of “do the minimal change necessary to achieve the required goals”. Architectural changes late in the process aren’t going to win if there are other alternatives. The fastest way was to start using the existing secure desktop policy again. So we did. Better that than to delay shipping.&lt;/p&gt; &lt;p&gt;So, here’s what your secure desktop behavior will be, depending on configuration:&lt;/p&gt; &lt;table style="width: 316pt; border-collapse: collapse" border="0" cellspacing="0" cellpadding="0" width="423"&gt; &lt;colgroup&gt; &lt;col style="width: 61pt; mso-width-source: userset; mso-width-alt: 2872" width="81"&gt; &lt;col style="width: 139pt; mso-width-source: userset; mso-width-alt: 6599" width="186"&gt; &lt;col style="width: 58pt; mso-width-source: userset; mso-width-alt: 2759" span="2" width="78"&gt; &lt;tbody&gt; &lt;tr style="height: 36.6pt; mso-height-source: userset" height="49"&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; width: 61pt; font-family: verdana; height: 36.6pt; color: #366092; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: 700; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" height="49" width="81"&gt;Acct. Type&lt;/td&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: 700; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Account Elevation Policy&lt;/td&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; width: 58pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: 700; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl68" width="78"&gt;Secure Desktop Policy&lt;/td&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; width: 58pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: #4f81bd 0.5pt solid; font-weight: 700; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl68" width="78"&gt;Secure Desktop Used?&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt;&lt;form id="aspnetForm" action="http://blogs.msdn.com/cjacks/default.aspx" name="aspnetForm" method="post"&gt; &lt;div&gt;Elevate Without Prompting&lt;/div&gt;&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;n/a&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for credentials on the secure desktop&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt;Prompt for consent on the secure desktop&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for credentials&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt;Prompt for consent&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for consent for non-Windows binaries  &lt;div&gt;&lt;/div&gt;&lt;/form&gt;&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt; &lt;form id="aspnetForm" method="post" name="aspnetForm" action="http://blogs.msdn.com/cjacks/default.aspx"&gt; &lt;div&gt;Elevate Without Prompting&lt;/div&gt;&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;n/a&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for credentials on the secure desktop&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt;Prompt for consent on the secure desktop&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for credentials&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;No&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt;Prompt for consent&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;No&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Administrator&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for consent for non-Windows binaries  &lt;div&gt;&lt;/div&gt;&lt;/form&gt;&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;No&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Standard User&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt; &lt;form id="aspnetForm" method="post" name="aspnetForm" action="http://blogs.msdn.com/cjacks/default.aspx"&gt; &lt;div&gt;Automatically deny elevation requests&lt;/div&gt;&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;n/a&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Standard User&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for credentials on the secure desktop&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Standard User&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt;Prompt for credentials  &lt;div&gt;&lt;/div&gt;&lt;/form&gt;&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Enabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Standard User&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt; &lt;form id="aspnetForm" method="post" name="aspnetForm" action="http://blogs.msdn.com/cjacks/default.aspx"&gt; &lt;div&gt;Automatically deny elevation requests&lt;/div&gt;&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;n/a&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl65" height="32"&gt;Standard User&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; width: 139pt; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl67" width="186"&gt;Prompt for credentials on the secure desktop&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: medium none; border-left: medium none; font-family: verdana; background: #dce6f1; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none; mso-pattern: #dce6f1 none" class="xl66"&gt;Yes&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 24pt; mso-height-source: userset" height="32"&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; font-family: verdana; height: 24pt; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl65" height="32"&gt;Standard User&lt;/td&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; width: 139pt; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl67" width="186"&gt;Prompt for credentials  &lt;div&gt;&lt;/div&gt;&lt;/form&gt;&lt;/td&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;Disabled&lt;/td&gt; &lt;td style="border-bottom: #4f81bd 0.5pt solid; border-left: medium none; font-family: verdana; color: #366092; font-size: 8pt; border-top: medium none; font-weight: 400; border-right: medium none; text-decoration: none; text-underline-style: none; text-line-through: none" class="xl66"&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/form&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9903942" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/UAC/default.aspx">UAC</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Springboard Series Virtual Roundtable - Windows 7 Application Compatibility Part 2: Virtualization</title><link>http://blogs.msdn.com/cjacks/archive/2009/09/23/springboard-series-virtual-roundtable-windows-7-application-compatibility-part-2-virtualization.aspx</link><pubDate>Wed, 23 Sep 2009 23:35:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898649</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9898649.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9898649</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9898649</wfw:comment><description>&lt;p&gt;&lt;strong&gt;Date:&amp;#160; Thursday, September 24      &lt;br /&gt;Time:&amp;#160; 9:00am Pacific Time&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://ms.istreamplanet.com/springboard"&gt;https://ms.istreamplanet.com/springboard&lt;/a&gt;&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;The reviews on &lt;a href="http://www.microsoft.com/windows/windows-7/default.aspx" target="_blank"&gt;Windows 7&lt;/a&gt; have been really great so far, but you obviously can’t start using it if, after installing it, all of the stuff you need in order to get your work done breaks. Application compatibility is so important, in fact, that we managed to get &lt;a href="http://blogs.technet.com/markrussinovich/" target="_blank"&gt;Mark Russinovich&lt;/a&gt; to come and talk about it not once, but twice!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/windows/dd981014.aspx?ITPID=proplan" target="_blank"&gt;In our first episode&lt;/a&gt;, Mark talked about the overall challenge, the process, and tools to help you get there. We spoke a little bit about remediation as well, specifically in the context of what we’ve been calling the lightweight remediation. Things like shims or policy changes.&lt;/p&gt;  &lt;p&gt;Alas, I was unable to attend this event, because they kind of forgot to invite me. They didn’t forget to script me in, mind you, they just forgot to tell me about it until I already had a customer commitment (which I never back out of). All kinds of formulations on how I could get from Ottawa, ON, Canada to Seattle and back without the customer noticing then ensued, until eventually everyone realized the futility of this discussion. So I recommended &lt;a href="http://blogs.msdn.com/orange/" target="_blank"&gt;several&lt;/a&gt; &lt;a href="http://blogs.msdn.com/aaron_margosis/" target="_blank"&gt;folks&lt;/a&gt; who are far smarter than me to join the panel in my stead.&lt;/p&gt;  &lt;p&gt;Apparently all of these people were unavailable for this round, because this time, they actually not only remembered to invite me, but actually chose to.&lt;/p&gt;  &lt;p&gt;This time around, we’ll be discussing the more heavyweight fixes for app compat problems. Specifically, how does virtualization fit into your application compatibility strategies? We’ll be discussing all of the different flavors of virtualization, dispelling myths, showcasing truths, and helping you get the information you need to develop a comprehensive and sensible strategy.&lt;/p&gt;  &lt;p&gt;We hope you’re able to join us live tomorrow!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898649" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/Application+Compatibility/default.aspx">Application Compatibility</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>How to Run Applications Manifested as HighestAvailable With a Logon Script Without Elevation for Members of the Administrators Group</title><link>http://blogs.msdn.com/cjacks/archive/2009/09/13/how-to-run-applications-manifested-as-highestavailable-with-a-logon-script-without-elevation-for-members-of-the-administrators-group.aspx</link><pubDate>Sun, 13 Sep 2009 18:22:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9894665</guid><dc:creator>Chris Jackson</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/cjacks/comments/9894665.aspx</comments><wfw:commentRss>http://blogs.msdn.com/cjacks/commentrss.aspx?PostID=9894665</wfw:commentRss><wfw:comment>http://blogs.msdn.com/cjacks/rsscomments.aspx?PostID=9894665</wfw:comment><description>&lt;p&gt;&lt;strong&gt;Updated 17-Sept-2009&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;My friend &lt;a href="http://blogs.msdn.com/aaron_margosis/" target="_blank"&gt;Aaron&lt;/a&gt; has been trying to post a comment with his recommendation. However, it never, never, ever shows up because apparently we either don’t buy good software for our blogging system, or else the software has a personal vendetta from him (perhaps it’s angry at him for not posting often enough himself). But his comment is worthwhile, so here it is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Rather than use that undocumented (and unsupported) environment variable, why not just change the &amp;quot;regedit&amp;quot; invocation to &amp;quot;REG.EXE IMPORT&amp;quot;? REG.EXE doesn't demand elevation -- it's manifested &amp;quot;asInvoker&amp;quot;, and can import .reg files...&lt;/p&gt; &lt;/blockquote&gt;  &lt;hr /&gt;  &lt;p&gt;Here’s a trick I used to help out a customer:&lt;/p&gt;  &lt;p&gt;My customer was using a logon script to set some per-user registry keys when the user logged in. This worked fine for their standard users on Windows XP, and it also worked fine for their standard users on Windows 7. However, it added an extra prompt for the few folks who had exceptions to be members of the Administrators group.&lt;/p&gt;  &lt;p&gt;You see, they were using regedit.exe to import a .reg file. And, even though they didn’t need administrator privileges to edit the parts of the registry they wanted to modify, the entire application is manifested as highestAvailable, so it would always prompt for their administrators.&lt;/p&gt;  &lt;p&gt;So I cooked up the following .bat file to achieve the same thing without annoying their administrators:&lt;/p&gt;  &lt;p&gt;&lt;font size="2" face="Consolas"&gt;set __COMPAT_LAYER=RunAsInvoker      &lt;br /&gt;start regedit.exe&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;And they were off to the races.&lt;/p&gt;  &lt;p&gt;Was there another way? Perhaps. But this let them keep their existing scripts and only have to add a single line at the front, so it was the path of least resistance.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9894665" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/cjacks/archive/tags/UAC/default.aspx">UAC</category><category domain="http://blogs.msdn.com/cjacks/archive/tags/Windows+7/default.aspx">Windows 7</category></item></channel></rss>