<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Vista Compatibility Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/vistacompatteam/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:44:26 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Moved</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/moved</link>
      <pubDate>Wed, 18 Jun 2008 18:50:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2008/06/18/moved/</guid>
      <description><![CDATA[As you might have noticed from the silence, we have moved on. Here are blogs for Vineet, Patrick,...]]></description>
      <content:encoded><![CDATA[<P>As you might have noticed from the silence, we have moved on. Here are blogs for <A class="" href="https://blogs.msdn.com/vineets" mce_href="https://blogs.msdn.com/vineets">Vineet</A>, <A class="" href="https://blogs.msdn.com/patricka" mce_href="https://blogs.msdn.com/patricka">Patrick</A>, <A class="" href="https://blogs.msdn.com/yvesdolc" mce_href="https://blogs.msdn.com/yvesdolc">Yves</A> and <A class="" href="https://blogs.msdn.com/maartenb" mce_href="https://blogs.msdn.com/maartenb">Maarten</A>. We're working on <A class="" href="https://msdn.microsoft.com/en-us/windowsvista/cc315067.aspx" mce_href="https://msdn.microsoft.com/en-us/windowsvista/cc315067.aspx">OEM Ready</A> lately and have our hands full. </P>
<P>For the original Vista AppCompat issues, you can keep going to <A class="" href="https://blogs.msdn.com/cjacks" mce_href="https://blogs.msdn.com/cjacks">Chris</A>' blog.</P>]]></content:encoded>
    </item>
    <item>
      <title>Folding shirts</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/folding-shirts</link>
      <pubDate>Thu, 07 Jun 2007 16:57:16 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/06/07/folding-shirts/</guid>
      <description><![CDATA[One of the nice things of being off-site with colleagues is that you learn interesting life...]]></description>
      <content:encoded><![CDATA[<p>One of the nice things of being off-site with colleagues is that you learn interesting life enhancing tricks. <a href="https://blogs.msdn.com/vishalsi/">Vishal</a> taught me the <a href="https://www.youtube.com/watch?v=gK1nGpvaHno">Ninja t-shirt</a> technique. I will never fold a t-shirt the same way again. 
</p><p>Maarten</p>]]></content:encoded>
    </item>
    <item>
      <title>Let us Test and Debug Your Application</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/let-us-test-and-debug-your-application</link>
      <pubDate>Tue, 05 Jun 2007 10:24:39 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/06/05/let-us-test-and-debug-your-application/</guid>
      <description><![CDATA[If you happen to be at Teched (or you know someone who is) we have a room setup to test your...]]></description>
      <content:encoded><![CDATA[<p>If you happen to be at Teched (or you know someone who is) we have a room setup to test your application for Vista compatibility issues. You can bring your application and we can troubleshoot it for problems. We have the debug experts from <a href="https://blogs.msdn.com/cjacks/">SWAT team</a> and from <a href="https://blogs.msdn.com/vishalsi/">Application Experience team</a>. 
</p><p>We're in room S329. 
</p><p>Maarten
</p>]]></content:encoded>
    </item>
    <item>
      <title>Integrity Level and the ROT</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/integrity-level-and-the-rot</link>
      <pubDate>Mon, 04 Jun 2007 11:00:45 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/06/04/integrity-level-and-the-rot/</guid>
      <description><![CDATA[Integrity Levels result in surprising behavior. The other day I was looking at an accessibility...]]></description>
      <content:encoded><![CDATA[<p>Integrity Levels result in surprising behavior. The other day I was looking at an accessibility application. Since accessibility applications need to be able to access applications that are potentially running with a MIC level of high, there is a setting in the manifest specifically for this purpose called uiAccess=true. If your application has this setting it will get a filtered token and a high MIC level, where normally it would get a filtered token and a medium MIC level. 
</p><p>Enumerating the ROT from an admin application (high MIC unfiltered token) will give me this:
</p><p style="margin-left: 36pt"><span style="font-family:Courier New">E:\Code\Roguer\Roguer.sln
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!DExplore.AppObj.8.0:5820
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!{BA018599-1DB3-44F9-83B4-461454C84BF8} ProgID: VisualStudio.DTE.8.0
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!{1B2EEDD6-C203-4D04-BD59-78906E3E8AAB} ProgID: VisualStudio.Solution.8.0
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!{639F725F-1B2D-4831-A9FD-874847682010} ProgID: DExplore.AppObj.8.0
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!VisualStudio.DTE.8.0:2644</span>
	</p><p>Running it from a standard user token (filtered token, medium MIC) will give me
</p><p style="margin-left: 36pt"><span style="font-family:Courier New">!{000209FF-0000-0000-C000-000000000046} ProgID: Word.Application.12
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">Document6
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">Document4
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!{0006F03A-0000-0000-C000-000000000046} ProgID: Outlook.Application.12
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!{FB50E079-F904-4833-B7C0-309366351F3A}
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">C:\Program Files\Microsoft Office\Templates\1033\Blog.dotx
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">Document3
</span></p><p style="margin-left: 36pt"><span style="font-family:Courier New">!{000209FE-0000-0000-C000-000000000046} ProgID: Word.Basic.9
</span></p><p>The list is completely different. And running it from a uiAccess=true application will give me:
</p><p>
 </p><p>Correct. Nothing. ROT is partitioned by user token and then again by MIC level. No application has registered itself with a filtered token with high IL. 
</p><p>Consequence of this is that accessibility applications need to use an intermediate process with filtered-medium-MIC token to get access to Word or other applications that are registered in the ROT. 
</p><p>
 </p><p>Maarten
</p>]]></content:encoded>
    </item>
    <item>
      <title>Signed Binaries in Non-trusted Locations</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/signed-binaries-in-non-trusted-locations</link>
      <pubDate>Mon, 04 Jun 2007 10:31:00 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/06/04/signed-binaries-in-non-trusted-locations/</guid>
      <description><![CDATA[When you inadvertently copy the complete cmd.exe to your quick launch bar instead of creating a...]]></description>
      <content:encoded><![CDATA[<P>When you inadvertently copy the complete cmd.exe to your quick launch bar instead of creating a shortcut, you get some interesting behavior on launching it elevated. Instead of good old trusted elevation prompt, we get the untrusted version.</P>
<P>Interesting. Surely the binary hasn't changed when copying it over? Let's check with sigcheck. Here is the original from system32: </P>
<P style="MARGIN-LEFT: 36pt"><SPAN style="FONT-FAMILY: Courier New">C:\Windows\system32&gt;sigcheck cmd.exe <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Sigcheck v1.4 <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Copyright (C) 2004-2007 Mark Russinovich <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Sysinternals - www.sysinternals.com </SPAN></P>
<P style="MARGIN-LEFT: 36pt"><SPAN style="FONT-FAMILY: Courier New">C:\Windows\system32\cmd.exe: </SPAN></P>
<P style="MARGIN-LEFT: 36pt"><SPAN style="FONT-FAMILY: Courier New">Verified: Signed <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Signing date: 4:14 AM 11/2/2006 <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Publisher: Microsoft Corporation <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Description: Windows Command Processor <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Product: Microsoft« Windows« Operating System <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Version: 6.0.6000.16386 <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">File version: 6.0.6000.16386 (vista_rtm.061101-2205) </SPAN></P>
<P>And the copied version: </P>
<P style="MARGIN-LEFT: 36pt"><SPAN style="FONT-FAMILY: Courier New">C:\Windows\system32&gt;sigcheck "C:\Users\maartenb\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\cmd.exe" <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Sigcheck v1.4 <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Copyright (C) 2004-2007 Mark Russinovich <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Sysinternals - <A href="https://www.sysinternals.com/">www.sysinternals.com</A> </SPAN></P>
<P style="MARGIN-LEFT: 36pt"><SPAN style="FONT-FAMILY: Courier New">c:\users\maartenb\appdata\roaming\microsoft\internet explorer\quick launch\cmd.exe: </SPAN></P>
<P style="MARGIN-LEFT: 36pt"><SPAN style="FONT-FAMILY: Courier New"></SPAN><SPAN style="FONT-FAMILY: Courier New">Verified: Signed <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Signing date: 4:14 AM 11/2/2006 <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Publisher: Microsoft Corporation <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Description: Windows Command Processor <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Product: Microsoft« Windows« Operating System <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">Version: 6.0.6000.16386 <BR></SPAN><SPAN style="FONT-FAMILY: Courier New">File version: 6.0.6000.16386 (vista_rtm.061101-2205) </SPAN></P>
<P>Sure enough. Same version, same file, both signed by Microsoft. So something else must be going on. </P>
<P>It turns out that Vista only shows the trusted consent dialog if the application is launched from a safe location, in this case System32. Due to the changed probing path (a command line application would first look for dlls in the application's directory), it would be trivial to load a rogue dll instead of a trusted version. The dialog doesn't mention this explicitly but the warning is certainly justified. </P>]]></content:encoded>
    </item>
    <item>
      <title>Is my Process Virtualized or Redirected?</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/is-my-process-virtualized-or-redirected</link>
      <pubDate>Mon, 30 Apr 2007 19:49:22 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/04/30/is-my-process-virtualized-or-redirected/</guid>
      <description><![CDATA[In some scenarios it might be necessary to know whether a process is actually being redirected or...]]></description>
      <content:encoded><![CDATA[<p>In some scenarios it might be necessary to know whether a process is actually being redirected or not. A case in point is for example a library that is loaded and needs to know whether the host process and the library have an identical view of the virtualized world. You can use <a href="https://msdn2.microsoft.com/en-us/library/aa446671.aspx">GetTokenInformation</a> with TokenVirtualizationEnabled to find that out. 
</p><p>The same API with TokenElevation instead of TokenVirtualizationEnabled will give you whether you run with an elevated token or not. Note that this does not guarantee you are running as administrator. You might very well be Backup Operator or standard user with a couple of manually added privileges. 
</p><p>Maarten</p>]]></content:encoded>
    </item>
    <item>
      <title>Debugging LSASS</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/debugging-lsass</link>
      <pubDate>Wed, 25 Apr 2007 15:15:28 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/04/25/debugging-lsass/</guid>
      <description><![CDATA[For some reason I had to debug LSASS (Local Security Authority Process) recently. Considering that...]]></description>
      <content:encoded><![CDATA[<p>For some reason I had to debug LSASS (Local Security Authority Process) recently. Considering that LSASS is rather involved in the functioning of the system with respect to authorization checks, it is cumbersome to debug. The system deadlocks immediately. Try for example attaching to lsass.exe from WinDbg and click the start button when the debugger is paused. Yep. Nothing. 
</p><p>Consulting with one of our security developer support gurus lead to a quick workaround. Do it remotely. 
</p><p>1) The server (debuggee where LSASS needs to be debugged) is started with the following command: (No need to restart anything)
</p><p>dbgsrv -t tcp:port=1025 
</p><p>2) On the debugger, start WinDbg as a client with this command:
</p><p>Windbg -premote tcp:server=&lt;servername&gt;,port=1025 -p &lt;lsass pid&gt;
</p><p>Thanks Prab. 
</p><p>Maarten</p>]]></content:encoded>
    </item>
    <item>
      <title>Certification Freebie</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/certification-freebie</link>
      <pubDate>Mon, 23 Apr 2007 13:49:33 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/04/23/certification-freebie/</guid>
      <description><![CDATA[I had mentioned in a previous post&nbsp;about handy certification tools.&nbsp; If that sparked your...]]></description>
      <content:encoded><![CDATA[<p>I had mentioned in a previous <a title="Vista Certification Testing Tools" href="https://blogs.msdn.com/vistacompatteam/archive/2007/04/06/vista-certification-testing-tools.aspx">post</a>&nbsp;about handy certification tools.&nbsp; If that sparked your interest in getting your app certified, Microsoft is extending the offer for a <a title="Free certified testing" href="https://microsoft.mrmpslc.com/InnovateOnWindowsVista/getstartedcert.aspx?LangType=1033#bottom">refund</a>&nbsp;for the cost of verification testing until the end of June.&nbsp; You only get a refund if you pass - so, make sure your app meets the requirements of the test cases. ;-)</p> <p>Pat</p>]]></content:encoded>
    </item>
    <item>
      <title>GetCurrentProcess fails on Net 1.1 on Vista</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/getcurrentprocess-fails-on-net-1-1-on-vista</link>
      <pubDate>Tue, 17 Apr 2007 21:34:30 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/04/17/getcurrentprocess-fails-on-net-1-1-on-vista/</guid>
      <description><![CDATA[This little snippet compiled with .Net 1.1: 
using System; 
	using System.Diagnostics;...]]></description>
      <content:encoded><![CDATA[<p>This little snippet compiled with .Net 1.1: 
</p><p><span style="font-family:Courier New">using System; </span>
	</p><p><span style="font-family:Courier New">using System.Diagnostics; </span>
	</p><p> 
 </p><p><span style="font-family:Courier New">class Program </span>
	</p><p><span style="font-family:Courier New">{ </span>
	</p><p><span style="font-family:Courier New">    static void Main(string[] args) </span>
	</p><p><span style="font-family:Courier New">    { </span>
	</p><p><span style="font-family:Courier New">        try </span>
	</p><p><span style="font-family:Courier New">        { </span>
	</p><p><span style="font-family:Courier New">            Process c = Process.GetCurrentProcess(); </span>
	</p><p> 
 </p><p><span style="font-family:Courier New">            Process[] p = Process.GetProcessesByName(c.ProcessName); </span>
	</p><p><span style="font-family:Courier New">        } </span>
	</p><p><span style="font-family:Courier New">        catch (Exception e) </span>
	</p><p><span style="font-family:Courier New">        { </span>
	</p><p><span style="font-family:Courier New">            Console.WriteLine(e.Message); </span>
	</p><p><span style="font-family:Courier New">        } </span>
	</p><p><span style="font-family:Courier New">    } </span>
	</p><p><span style="font-family:Courier New">} </span>
	</p><p> 
 </p><p>will fail on Vista as standard user and hence filtered admin with this error: 
</p><p><span style="font-family:Courier New">{"Couldn't get process information from remote machine."} </span>
	</p><p>Compiling it under 2.0 will get you passed it. 
</p><p> 
 </p><p>Maarten</p>]]></content:encoded>
    </item>
    <item>
      <title>C2065: 'TOKEN_LINKED_TOKEN' : undeclared identifier</title>
      <link>https://docs.microsoft.com/archive/blogs/vistacompatteam/c2065-token_linked_token-undeclared-identifier</link>
      <pubDate>Tue, 17 Apr 2007 21:15:10 GMT</pubDate>
      <dc:creator><![CDATA[MSDN Archive]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vistacompatteam/2007/04/17/c2065-token_linked_token-undeclared-identifier/</guid>
      <description><![CDATA[If you get    
error C2065: 'TOKEN_LINKED_TOKEN' : undeclared identifier    
when you try to...]]></description>
      <content:encoded><![CDATA[<p>If you get    
</p><p>error C2065: 'TOKEN_LINKED_TOKEN' : undeclared identifier    
</p><p>when you try to compile a VC++ project that needs to get the linked token through GetTokenInformation, you need to get the <a href="https://www.microsoft.com/downloads/details.aspx?FamilyId=C2B1E300-F358-4523-B479-F53D234CDCCF&amp;displaylang=en">Microsoft Windows SDK for Windows Vista</a>. This is true for all the new Vista APIs of course. The SDK that shipped with Visual Studio is old and was built prior to Vista's existence. 
</p><p>You need to add the include, bin and lib directories of the platform SDK (default is C:\Program Files\Microsoft SDKs\Windows\v6.0) to Tools\Option\VC++ directories.
</p><p>Maarten
</p>]]></content:encoded>
    </item>
  </channel>
</rss>