<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Vista Compatibility Team Blog</title><subtitle type="html" /><id>http://blogs.msdn.com/b/vistacompatteam/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/vistacompatteam/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2007-04-18T02:15:10Z</updated><entry><title>Moved</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2008/06/18/moved.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2008/06/18/moved.aspx</id><published>2008-06-19T01:50:00Z</published><updated>2008-06-19T01:50:00Z</updated><content type="html">&lt;P&gt;As you might have noticed from the silence, we have moved on. Here are blogs for &lt;A class="" href="http://blogs.msdn.com/vineets" mce_href="http://blogs.msdn.com/vineets"&gt;Vineet&lt;/A&gt;, &lt;A class="" href="http://blogs.msdn.com/patricka" mce_href="http://blogs.msdn.com/patricka"&gt;Patrick&lt;/A&gt;, &lt;A class="" href="http://blogs.msdn.com/yvesdolc" mce_href="http://blogs.msdn.com/yvesdolc"&gt;Yves&lt;/A&gt; and &lt;A class="" href="http://blogs.msdn.com/maartenb" mce_href="http://blogs.msdn.com/maartenb"&gt;Maarten&lt;/A&gt;. We're working on &lt;A class="" href="http://msdn.microsoft.com/en-us/windowsvista/cc315067.aspx" mce_href="http://msdn.microsoft.com/en-us/windowsvista/cc315067.aspx"&gt;OEM Ready&lt;/A&gt; lately and have our hands full. &lt;/P&gt;
&lt;P&gt;For the original Vista AppCompat issues, you can keep going to &lt;A class="" href="http://blogs.msdn.com/cjacks" mce_href="http://blogs.msdn.com/cjacks"&gt;Chris&lt;/A&gt;' blog.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8618985" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Folding shirts</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/07/folding-shirts.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/07/folding-shirts.aspx</id><published>2007-06-07T23:57:16Z</published><updated>2007-06-07T23:57:16Z</updated><content type="html">&lt;p&gt;One of the nice things of being off-site with colleagues is that you learn interesting life enhancing tricks. &lt;a href="http://blogs.msdn.com/vishalsi/"&gt;Vishal&lt;/a&gt; taught me the &lt;a href="http://www.youtube.com/watch?v=gK1nGpvaHno"&gt;Ninja t-shirt&lt;/a&gt; technique. I will never fold a t-shirt the same way again. 
&lt;/p&gt;&lt;p&gt;Maarten&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3148324" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Let us Test and Debug Your Application </title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/05/let-us-test-and-debug-your-application.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/05/let-us-test-and-debug-your-application.aspx</id><published>2007-06-05T17:24:39Z</published><updated>2007-06-05T17:24:39Z</updated><content type="html">&lt;p&gt;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 &lt;a href="http://blogs.msdn.com/cjacks/"&gt;SWAT team&lt;/a&gt; and from &lt;a href="http://blogs.msdn.com/vishalsi/"&gt;Application Experience team&lt;/a&gt;. 
&lt;/p&gt;&lt;p&gt;We're in room S329. 
&lt;/p&gt;&lt;p&gt;Maarten
&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3098055" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Integrity Level and the ROT</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/04/integrity-level-and-the-rot.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/04/integrity-level-and-the-rot.aspx</id><published>2007-06-04T18:00:45Z</published><updated>2007-06-04T18:00:45Z</updated><content type="html">&lt;p&gt;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. 
&lt;/p&gt;&lt;p&gt;Enumerating the ROT from an admin application (high MIC unfiltered token) will give me this:
&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;E:\Code\Roguer\Roguer.sln
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!DExplore.AppObj.8.0:5820
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!{BA018599-1DB3-44F9-83B4-461454C84BF8} ProgID: VisualStudio.DTE.8.0
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!{1B2EEDD6-C203-4D04-BD59-78906E3E8AAB} ProgID: VisualStudio.Solution.8.0
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!{639F725F-1B2D-4831-A9FD-874847682010} ProgID: DExplore.AppObj.8.0
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!VisualStudio.DTE.8.0:2644&lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;Running it from a standard user token (filtered token, medium MIC) will give me
&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!{000209FF-0000-0000-C000-000000000046} ProgID: Word.Application.12
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;Document6
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;Document4
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!{0006F03A-0000-0000-C000-000000000046} ProgID: Outlook.Application.12
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!{FB50E079-F904-4833-B7C0-309366351F3A}
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;C:\Program Files\Microsoft Office\Templates\1033\Blog.dotx
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;Document3
&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Courier New"&gt;!{000209FE-0000-0000-C000-000000000046} ProgID: Word.Basic.9
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The list is completely different. And running it from a uiAccess=true application will give me:
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;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. 
&lt;/p&gt;&lt;p&gt;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. 
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Maarten
&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3082263" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Signed Binaries in Non-trusted Locations</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/04/signed-binaries-in-non-trusted-locations.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/06/04/signed-binaries-in-non-trusted-locations.aspx</id><published>2007-06-04T17:31:00Z</published><updated>2007-06-04T17:31:00Z</updated><content type="html">&lt;P&gt;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.&lt;/P&gt;
&lt;P&gt;Interesting. Surely the binary hasn't changed when copying it over? Let's check with sigcheck. Here is the original from system32: &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;C:\Windows\system32&amp;gt;sigcheck cmd.exe &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Sigcheck v1.4 &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Copyright (C) 2004-2007 Mark Russinovich &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Sysinternals - www.sysinternals.com &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;C:\Windows\system32\cmd.exe: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Verified: Signed &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Signing date: 4:14 AM 11/2/2006 &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Publisher: Microsoft Corporation &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Description: Windows Command Processor &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Product: Microsoft« Windows« Operating System &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Version: 6.0.6000.16386 &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;File version: 6.0.6000.16386 (vista_rtm.061101-2205) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;And the copied version: &lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;C:\Windows\system32&amp;gt;sigcheck "C:\Users\maartenb\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\cmd.exe" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Sigcheck v1.4 &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Copyright (C) 2004-2007 Mark Russinovich &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Sysinternals - &lt;A href="http://www.sysinternals.com/"&gt;www.sysinternals.com&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;c:\users\maartenb\appdata\roaming\microsoft\internet explorer\quick launch\cmd.exe: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Verified: Signed &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Signing date: 4:14 AM 11/2/2006 &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Publisher: Microsoft Corporation &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Description: Windows Command Processor &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Product: Microsoft« Windows« Operating System &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;Version: 6.0.6000.16386 &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Courier New"&gt;File version: 6.0.6000.16386 (vista_rtm.061101-2205) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Sure enough. Same version, same file, both signed by Microsoft. So something else must be going on. &lt;/P&gt;
&lt;P&gt;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. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3081997" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Is my Process Virtualized or Redirected?</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/05/01/is-my-process-virtualized-or-redirected.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/05/01/is-my-process-virtualized-or-redirected.aspx</id><published>2007-05-01T02:49:22Z</published><updated>2007-05-01T02:49:22Z</updated><content type="html">&lt;p&gt;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 &lt;a href="http://msdn2.microsoft.com/en-us/library/aa446671.aspx"&gt;GetTokenInformation&lt;/a&gt; with TokenVirtualizationEnabled to find that out. 
&lt;/p&gt;&lt;p&gt;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. 
&lt;/p&gt;&lt;p&gt;Maarten&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2346291" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Debugging LSASS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/25/debugging-lsass.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/25/debugging-lsass.aspx</id><published>2007-04-25T22:15:28Z</published><updated>2007-04-25T22:15:28Z</updated><content type="html">&lt;p&gt;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. 
&lt;/p&gt;&lt;p&gt;Consulting with one of our security developer support gurus lead to a quick workaround. Do it remotely. 
&lt;/p&gt;&lt;p&gt;1) The server (debuggee where LSASS needs to be debugged) is started with the following command: (No need to restart anything)
&lt;/p&gt;&lt;p&gt;dbgsrv -t tcp:port=1025 
&lt;/p&gt;&lt;p&gt;2) On the debugger, start WinDbg as a client with this command:
&lt;/p&gt;&lt;p&gt;Windbg -premote tcp:server=&amp;lt;servername&amp;gt;,port=1025 -p &amp;lt;lsass pid&amp;gt;
&lt;/p&gt;&lt;p&gt;Thanks Prab. 
&lt;/p&gt;&lt;p&gt;Maarten&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2275279" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Certification Freebie</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/23/certification-freebie.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/23/certification-freebie.aspx</id><published>2007-04-23T20:49:33Z</published><updated>2007-04-23T20:49:33Z</updated><content type="html">&lt;p&gt;I had mentioned in a previous &lt;a title="Vista Certification Testing Tools" href="http://blogs.msdn.com/vistacompatteam/archive/2007/04/06/vista-certification-testing-tools.aspx"&gt;post&lt;/a&gt;&amp;nbsp;about handy certification tools.&amp;nbsp; If that sparked your interest in getting your app certified, Microsoft is extending the offer for a &lt;a title="Free certified testing" href="http://microsoft.mrmpslc.com/InnovateOnWindowsVista/getstartedcert.aspx?LangType=1033#bottom"&gt;refund&lt;/a&gt;&amp;nbsp;for the cost of verification testing until the end of June.&amp;nbsp; You only get a refund if you pass - so, make sure your app meets the requirements of the test cases. ;-)&lt;/p&gt; &lt;p&gt;Pat&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2248419" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>GetCurrentProcess fails on Net 1.1 on Vista</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/18/getcurrentprocess-fails-on-net-1-1-on-vista.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/18/getcurrentprocess-fails-on-net-1-1-on-vista.aspx</id><published>2007-04-18T04:34:30Z</published><updated>2007-04-18T04:34:30Z</updated><content type="html">&lt;p&gt;This little snippet compiled with .Net 1.1: 
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;using System; &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;using System.Diagnostics; &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;class Program &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;{ &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;    static void Main(string[] args) &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;    { &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;        try &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;        { &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;            Process c = Process.GetCurrentProcess(); &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;            Process[] p = Process.GetProcessesByName(c.ProcessName); &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;        } &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;        catch (Exception e) &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;        { &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;            Console.WriteLine(e.Message); &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;        } &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;    } &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;} &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;will fail on Vista as standard user and hence filtered admin with this error: 
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;{"Couldn't get process information from remote machine."} &lt;/span&gt;
	&lt;/p&gt;&lt;p&gt;Compiling it under 2.0 will get you passed it. 
&lt;/p&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;Maarten&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2167911" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>C2065: 'TOKEN_LINKED_TOKEN' : undeclared identifier</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/18/c2065-token-linked-token-undeclared-identifier.aspx" /><id>http://blogs.msdn.com/b/vistacompatteam/archive/2007/04/18/c2065-token-linked-token-undeclared-identifier.aspx</id><published>2007-04-18T04:15:10Z</published><updated>2007-04-18T04:15:10Z</updated><content type="html">&lt;p&gt;If you get    
&lt;/p&gt;&lt;p&gt;error C2065: 'TOKEN_LINKED_TOKEN' : undeclared identifier    
&lt;/p&gt;&lt;p&gt;when you try to compile a VC++ project that needs to get the linked token through GetTokenInformation, you need to get the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C2B1E300-F358-4523-B479-F53D234CDCCF&amp;amp;displaylang=en"&gt;Microsoft Windows SDK for Windows Vista&lt;/a&gt;. 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. 
&lt;/p&gt;&lt;p&gt;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.
&lt;/p&gt;&lt;p&gt;Maarten
&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2167691" width="1" height="1"&gt;</content><author><name>MSDNArchive</name><uri>http://blogs.msdn.com/MSDNArchive/ProfileUrlRedirect.ashx</uri></author></entry></feed>