<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.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>A Premier Field Engineer in Denmark</title><link>http://blogs.technet.com/b/craigf/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>MBAM 2.0 gets released along with Service Packs to most MDOP apps</title><link>http://blogs.technet.com/b/craigf/archive/2013/04/12/mbam-2-0-gets-released-along-with-service-packs-to-most-mdop-apps.aspx</link><pubDate>Fri, 12 Apr 2013 21:00:22 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3566563</guid><dc:creator>Craig Forster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3566563</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2013/04/12/mbam-2-0-gets-released-along-with-service-packs-to-most-mdop-apps.aspx#comments</comments><description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Just a quick note to publicise that MBAM 2.0 is now out, and each of AGPM 4.0, DaRT8.0, App-v 5.0, UE-V 1.0 each received their own updates to Service Pack 1. They are bundled in the new MDOP 2013.&lt;/p&gt;  &lt;p&gt;Read more about it here at the new home for the MDOP team: &lt;a title="http://blogs.windows.com/windows/b/business/archive/2013/04/10/making-windows-8-even-more-manageable-with-mdop-2013.aspx" href="http://blogs.windows.com/windows/b/business/archive/2013/04/10/making-windows-8-even-more-manageable-with-mdop-2013.aspx"&gt;http://blogs.windows.com/windows/b/business/archive/2013/04/10/making-windows-8-even-more-manageable-with-mdop-2013.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3566563" width="1" height="1"&gt;</description></item><item><title>Using SONOS as a “Play To” destination from within Windows RT</title><link>http://blogs.technet.com/b/craigf/archive/2013/04/08/using-sonos-as-a-play-to-destination-from-within-windows-rt.aspx</link><pubDate>Mon, 08 Apr 2013 20:02:35 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3564181</guid><dc:creator>Craig Forster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3564181</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2013/04/08/using-sonos-as-a-play-to-destination-from-within-windows-rt.aspx#comments</comments><description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I recently became the proud owner of the fantastic &lt;a href="http://www.sonos.com/shop/products/playbar" target="_blank"&gt;Sonos PLAYBAR&lt;/a&gt;. And while the Sonos team is &lt;a href="https://ask.sonos.com/sonos/topics/does_sonos_plan_to_support_windows_8_rt_for_surface_tablet" target="_blank"&gt;considering creating a Windows 8 App&lt;/a&gt; to control their devices, I found a neat little hack to get the DLNA portion of the Sonos to become a “Play To” device from within Windows 8 music apps.&lt;/p&gt;  &lt;p&gt;See the blog post here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://digitalmediaphile.com/index.php/2013/03/30/using-uncertified-play-to-devices-on-surface-rt-w8-apps/" href="http://digitalmediaphile.com/index.php/2013/03/30/using-uncertified-play-to-devices-on-surface-rt-w8-apps/"&gt;http://digitalmediaphile.com/index.php/2013/03/30/using-uncertified-play-to-devices-on-surface-rt-w8-apps/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here are the registry keys I created for the PLAYBAR:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/4466.image_5F00_06A99B6E.png"&gt;&lt;img title="Regedit" style="display: inline; background-image: none;" border="0" alt="Regedit" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/6560.image_5F00_thumb_5F00_79CF454F.png" width="515" height="287" /&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3564181" width="1" height="1"&gt;</description></item><item><title>Troubleshooting Windows Performance Issues: Lots of RAM but no Available Memory</title><link>http://blogs.technet.com/b/craigf/archive/2012/12/07/troubleshooting-windows-performance-issues-lots-of-ram-but-no-available-memory.aspx</link><pubDate>Fri, 07 Dec 2012 10:14:49 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3539395</guid><dc:creator>Craig Forster</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3539395</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2012/12/07/troubleshooting-windows-performance-issues-lots-of-ram-but-no-available-memory.aspx#comments</comments><description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;One of my recent posts was recently polished up enough to appear on the MSPFE blog:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/b/mspfe/archive/2012/12/06/lots-of-ram-but-no-available-memory.aspx" href="http://blogs.technet.com/b/mspfe/archive/2012/12/06/lots-of-ram-but-no-available-memory.aspx"&gt;http://blogs.technet.com/b/mspfe/archive/2012/12/06/lots-of-ram-but-no-available-memory.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That blog roll is a new initiative within the Premier Field Engineer community to “put our best foot forward”.&lt;/p&gt;  &lt;p&gt;Posts appear from all the Microsoft technologies we support by PFEs like me who are working everyday with our customers to help them to resolve their technical issues. I hope it’s useful to you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3539395" width="1" height="1"&gt;</description></item><item><title>Messages cannot be sent when Exchange Hub Transport Service runs as NetworkService</title><link>http://blogs.technet.com/b/craigf/archive/2012/10/15/messages-cannot-be-sent-when-exchange-hub-transport-service-runs-as-networkservice.aspx</link><pubDate>Mon, 15 Oct 2012 12:38:20 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3526049</guid><dc:creator>Craig Forster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3526049</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2012/10/15/messages-cannot-be-sent-when-exchange-hub-transport-service-runs-as-networkservice.aspx#comments</comments><description>&lt;p&gt;Hi again,&lt;/p&gt;  &lt;p&gt;I think the post title is pretty self explanatory.&lt;/p&gt;  &lt;p&gt;Just to clarify it a little, the customer who hit this problem found that&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A work-around was to run the service as LocalSystem.&lt;/li&gt;    &lt;li&gt;Mails between mailboxes on the same server would not be delivered while running the Hub Transport service as NetworkService.&lt;/li&gt;    &lt;li&gt;Those messages would move to the Sent Items folder in Outlook running in cached mode and would sit in Drafts and be shown in italics in OWA and Outlook in online mode.&lt;/li&gt;    &lt;li&gt;Messages from the internet coming in would always be delivered just fine.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;OK, so what could be causing the problem?&lt;/p&gt;  &lt;p&gt;Well, let’s first define what the 3 built-in security contexts for running services are and how they differ from each other:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="321" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="76"&gt;         &lt;h3 style="margin-right: 0px;" dir="ltr" align="center"&gt;&amp;#160;&lt;/h3&gt;          &lt;h3 style="margin-right: 0px;" dir="ltr" align="center"&gt;Account&lt;/h3&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h3 align="center"&gt;Local&lt;/h3&gt;          &lt;h3 align="center"&gt;Permissions&lt;/h3&gt;       &lt;/td&gt;        &lt;td valign="top" width="198"&gt;         &lt;h3 align="center"&gt;Can act&lt;/h3&gt;          &lt;h3 align="center"&gt;on the network&lt;/h3&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="76"&gt;         &lt;p align="center"&gt;LocalService&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;p align="center"&gt;Limited&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="198"&gt;         &lt;p align="center"&gt;No&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="76"&gt;         &lt;p align="center"&gt;NetworkService&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;p align="center"&gt;Limited&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="198"&gt;         &lt;p align="center"&gt;Yes&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="76"&gt;         &lt;p align="center"&gt;LocalSystem&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;p align="center"&gt;Full&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="198"&gt;         &lt;p align="center"&gt;Yes&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So any service running as LocalService cannot use the computers identity on the network and cannot authenticate to domain-joined resources on the network (and networked computers cannot authenticate to this service). A service running as NetworkService can do this authentication with remote resources. Both of these accounts have very limited permissions to access files and registry keys on the local system.&lt;/p&gt;  &lt;p&gt;LocalSystem has no restrictions on the local computer and also has the ability to authenticate on the network and have networked computers authenticate with it. This is a bad context to use for the Hub Transport service as it has too much access on the local server.&lt;/p&gt;  &lt;p&gt;So my first thought was that because LocalSystem works when sending messages and NetworkService does not work, then it wouldn’t be a problem regarding network authentication because both of these profiles support authenticating on the network. So it would be a local permission problem. &lt;a href="http://live.sysinternals.com/procmon.exe" target="_blank"&gt;Process Monitor&lt;/a&gt; from Sysinternals is a great tool for highlighting missing permissions to local resources.&lt;/p&gt;  &lt;p&gt;We shutdown all but 1 Hub Transport servers and on the remaining Hub Transport server we started the Hub Transport service as NetworkService. We then started up Process Monitor with a filter to show only events where RESULT = ACCESS DENIED like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/7838.image_5F00_01E62687.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/3247.image_5F00_thumb_5F00_72EED19F.png" width="506" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But when sending an email from one mailbox to another, it didn’t record any actions which were very interesting at all.&lt;/p&gt;  &lt;p&gt;So, back to the drawing board. What about the scenario we excluded at the start? Network authentication. Well, what is happening with authentication is that the Mailbox server is trying to authenticate to the Hub Transport server to let it know that there are new messages that it needs to process.&lt;/p&gt;  &lt;p&gt;To get started we need to know how it’s authenticating and are there any problems during authentication. We looked at the Security event logs on both the Mailbox server and the Hub Transport server focusing on the time the test message was sent. What we saw were “Audit Failure” with an Event ID 4265. The interesting parts of the event were that Kerberos was attempted, the SID authenticating was NULL and the error was “invalid key”.&lt;/p&gt;  &lt;p&gt;We need to know which Kerberos tickets were in use for the LocalSystem logon session on the Mailbox server (we know that the information Store service starts as LocalSystem from &lt;a href="http://technet.microsoft.com/en-us/library/ee423542.aspx" target="_blank"&gt;here&lt;/a&gt;). We ran &lt;a href="http://live.sysinternals.com/logonsessions.exe" target="_blank"&gt;LogonSessions.exe&lt;/a&gt; from Sysinternals and got an output like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;C:\&amp;gt;logonsessions.exe&lt;/font&gt;&lt;/p&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;Logonsesions v1.21        &lt;br /&gt; Copyright (C) 2004-2010 Bryce Cogswell and Mark Russinovich         &lt;br /&gt;Sysinternals - wwww.sysinternals.com&lt;/font&gt;&lt;/p&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;    &lt;p&gt;     &lt;br /&gt;&lt;font face="Courier New"&gt; [0] Logon session 00000000:00000&lt;font style="background-color: rgb(255, 255, 0);"&gt;3e7&lt;/font&gt;:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; User name:&amp;#160;&amp;#160;&amp;#160; CONTOSO\SERVER-1$         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Auth package: Negotiate         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon type:&amp;#160;&amp;#160; (none)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Session:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Sid:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; S-1-5-18         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon time:&amp;#160;&amp;#160; 10/10/2012 12:04:25         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon server:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DNS Domain:&amp;#160;&amp;#160; contoso.com         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPN:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SERVER-1$@contoso.com&lt;/font&gt;&lt;/p&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;[1] Logon session 00000000:0000ae9f:        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; User name:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Auth package: NTLM         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon type:&amp;#160;&amp;#160; (none)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Session:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Sid:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (none)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon time:&amp;#160;&amp;#160; 10/10/2012 12:04:25         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon server:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DNS Domain:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPN:&lt;/font&gt;&lt;/p&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;    &lt;p&gt;&lt;font face="Courier New"&gt;[2] Logon session 00000000:0000&lt;/font&gt;&lt;font face="Courier New"&gt;0&lt;font style="style"&gt;3e4&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font style="style"&gt;&lt;/font&gt;:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; User name:&amp;#160;&amp;#160;&amp;#160; CONTOSO\SERVER-1$         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Auth package: Negotiate         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon type:&amp;#160;&amp;#160; Service         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Session:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Sid:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; S-1-5-20         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon time:&amp;#160;&amp;#160; 10/10/2012 12:04:26         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon server:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DNS Domain:&amp;#160;&amp;#160; contoso.com         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPN:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CONTOS-1$@contoso.com&lt;/font&gt;&lt;/p&gt;   &lt;font face="Courier New"&gt;&lt;/font&gt;    &lt;p&gt;     &lt;br /&gt;&lt;font face="Courier New"&gt; [3] Logon session 00000000:000003e5:        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; User name:&amp;#160;&amp;#160;&amp;#160; NT AUTHORITY\LOCAL SERVICE         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Auth package: Negotiate         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon type:&amp;#160;&amp;#160; Service         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Session:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Sid:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; S-1-5-19         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon time:&amp;#160;&amp;#160; 10/10/2012 12:04:26         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Logon server:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DNS Domain:         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UPN:&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The first entry [0] is LocalSystem using Kerberos. Next [1] is NTLM authentication. Then [2] is NetworkService and lastly [3] is LocalService which has no ability to authenticate. So the logon session ID we want to target is 0x3e7 which I’ve highlighted above.&lt;/p&gt;  &lt;p&gt;We then ran&lt;font face="Courier New"&gt; klist tickets –li 0x3e7&lt;/font&gt; on the Mailbox server to view the Kerberos service tickets held by the LocalSystem logon identity. This service will need a Kerberos ticket which is valid on the Hub Transport server. There was indeed a service ticket which was valid on the Hub Transport server (i.e. the encryption type AES256) was relevant as all Exchange servers are running on Windows Server 2008 SP2, the valid date range was correct and the clocks were in sync. So everything looks OK and the Mailbox server should be able to authenticate with the NetworkService logon session on the Hub Transport server. But it can’t. Why? Because the key which NetworkService on the Hub Transport servers should have been able to use to decrypt the incoming authentication message (the Kerberos service ticket) from the Mailbox server was broken for NetworkService, as explained here:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/2566059" href="http://support.microsoft.com/kb/2566059"&gt;http://support.microsoft.com/kb/2566059&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The domain functional level was at Windows Server 2003 and there was 1 2003 DC remaining in the domain, meaning that the pre-authentication key is encrypted using RC4 as newer AES128 and AES256&amp;#160; are not understood by 2003 DCs. When the first Windows Server 2008 member servers were added, they were these Exchange 2007 servers. The 2003 DCs started logging errors each time one of these 2008 clients requested a TGT or a Service Ticket because they would request it as AES256, which the 2003 OS didn’t understand. It would then negotiate down to RC4 and just work. In the mean time the 2003 DCs logged an error in the System event log about not understanding AES256.&lt;/p&gt;  &lt;p&gt;As a workaround to prevent the errors from filling the event logs on the 2003 DCs and from filling the monitoring application window, they implemented a reg key on the Exchange servers to force them to always request RC4 encrypted tickets. They found this hint on a 3rd party user forum site.&lt;/p&gt;  &lt;p&gt;We removed this key on the Mailbox servers:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;samp&gt;HKLM\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\DefaultEncryptionType&lt;/samp&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;samp&gt;&lt;font face="Segoe UI"&gt;We then removed all the Kerberos tickets which were cached on the Mailbox server using this command:&lt;/font&gt;&lt;/samp&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;samp&gt;klist purge –li 0x3e7&lt;/samp&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;samp&gt;&lt;font face="Segoe UI"&gt;And we then verified that this hotfix was installed on the remaining 2003 DCs so that they wouldn’t log the errors which flooded the event viewer causing them to implement the key we removed:&lt;/font&gt;&lt;/samp&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/948963" href="http://support.microsoft.com/kb/948963"&gt;http://support.microsoft.com/kb/948963&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We couldn’t install the hotfix mentioned in KB2566059 on the Mailbox servers as they were running on Windows Server 2008 SP2 and the hotfix was only built and released for Windows Server 2008 R2 as was not back-ported to Windows Server 2008 SP2. So the hotfix was not available to us.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As a final note, why did internet messages work? Well, those messages are coming from unauthenticated senders – on the internet. Messages travelling from one mailbox to another are coming from one authenticated user to another. So authentication must be working for mailbox-to-mailbox messaging. But unauthenticated messages from the internet just worked.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I hope this helps someone else in their troubleshooting the future.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3526049" width="1" height="1"&gt;</description></item><item><title>SharePoint and SID History not playing well together</title><link>http://blogs.technet.com/b/craigf/archive/2012/10/15/sharepoint-and-sid-history-not-playing-well-together.aspx</link><pubDate>Mon, 15 Oct 2012 10:41:44 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3526034</guid><dc:creator>Craig Forster</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3526034</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2012/10/15/sharepoint-and-sid-history-not-playing-well-together.aspx#comments</comments><description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;I struck a problem at a custom and the impact, while it seemed minor on the surface, was actually a big deal for their migration project. In fact, the large team they had assembled to migrate users from one forest to a new forest had stopped while this issue was investigated.&lt;/p&gt;  &lt;p&gt;It relates to SID History and the way Windows queries for and caches Name-to-SID and SID-to-Name lookups from AD. This cache was causing SharePoint to think that a user who wanted to logon was actually a user from the wrong domain, and would create that person a new identity for that person within SharePoint for them.&lt;/p&gt;  &lt;p&gt;The scenario is actually very close to this one:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/b/rgullick/archive/2010/05/15/sharepoint-people-picker.aspx" href="http://blogs.technet.com/b/rgullick/archive/2010/05/15/sharepoint-people-picker.aspx"&gt;http://blogs.technet.com/b/rgullick/archive/2010/05/15/sharepoint-people-picker.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But the workaround that we found would resolve the problem while they were migrating was pretty cool, so I thought I’d save it for all eternity here as a blog.&lt;/p&gt;  &lt;p&gt;It boils down to this:&lt;/p&gt;  &lt;p&gt;The LsaCache stores the previously looked-up domain user names and their SIDs. By asking a DC which has users that have both the new SID and the migrated SID on them at the same time, the DC always links the migrated SID to the new user name, not the old user name. If we can artificially fill the LsaCache with mappings for OLD USERNAME = OLD SID in our servers, then we can act as though no resources have migrated yet.&lt;/p&gt;  &lt;p&gt;Here’s the scenario where users were migrated with SID History from child1.domainA.com to domainB.com&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/1738.image_5F00_34E9F797.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/0247.image_5F00_thumb_5F00_51A36CAC.png" width="512" height="349" /&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;CHILD1\bob logs onto a workstation in CHILD1 and opens the SPS site in DOMAINB (intranet.domainB.com)&lt;/li&gt;    &lt;li&gt;SPS asks IIS, which asks Windows for a local DC to resolve a remote SID: S-1-5-21-[SID_for_CHILD1]-1010&lt;/li&gt;    &lt;li&gt;The local DC finds the SID assigned to the migrated user in the global catalog&lt;/li&gt;    &lt;li&gt;The local DC returns the account name of the migrated user, DOMAIN2\bob&lt;/li&gt;    &lt;li&gt;The SPS server adds the result to its LsaCache as a mapping for this SID to the DOMAIN2 account&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So we can see from the picture above that the LsaCache (the table in the bottom right of the drawing) has a mapping for NEW USERNAME = OLD SID but we want OLD USERNAME = OLD SID&lt;/p&gt;  &lt;p&gt;So, let’s warm up the LsaCache so it looks the way we’d like it to:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/4073.image_5F00_368A9D9E.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/0160.image_5F00_thumb_5F00_423FE4D0.png" width="517" height="367" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;SPS constantly runs a script to query for the name CHILD1\bob&lt;/li&gt;    &lt;li&gt;The local DC queries its Global Catalog and does NOT have a record for this username&lt;/li&gt;    &lt;li&gt;The local DC must do its own LSA query to a DC in the domain CHILD1 for this name&lt;/li&gt;    &lt;li&gt;The remote DC in CHILD1 finds the user and replies with the SID: S-1-5-21-[SID_for_CHILD1]-1010&lt;/li&gt;    &lt;li&gt;The CHILD1 DC returns this to the DOMAINB DC (the DOMAINB DC caches this result in its own LsaCache)&lt;/li&gt;    &lt;li&gt;The local DC returns this result to the SPS server&lt;/li&gt;    &lt;li&gt;The SPS server adds this entry to its LsaCache&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Ah ha! Now our cache looks the way we’d like it, where OLD USERNAME = OLD SID. This way when a query for OLD SID is made, the result from cache will return OLD USERNAME.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/1830.image_5F00_3250A00C.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80-metablogapi/4863.image_5F00_thumb_5F00_622B41CD.png" width="517" height="352" /&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;CHILD1\bob logs onto a workstation in CHILD1 and opens the SPS site in DOMIANB (intranet.domainB.com)&lt;/li&gt;    &lt;li&gt;SPS does NOT ask the local DC for the remote SID, it uses its LsaCache&lt;/li&gt;    &lt;li&gt;The LsaCache on SPS replies back with the username which relates to the SID: S-1-5-21-[SID_for_CHILD1]-1010 is CHILD1\bob&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The important step here is the red X where there IS NO STEP. What I mean is that the SharePoint server never talked to the DC to get the OLD SID lookup to return a result, meaning that we relied totally on the warmed up cache on the SPS alone.&lt;/p&gt;  &lt;p&gt;This relies on the LsaCache on the SPS server ALWAYS having the entry for the SID from the CHILD1 domain matching the CHILD1 username, and never matching the DOMAINB username. The only way to ensure this is:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Constantly query from the SPS server for the name CHILD1\username for every user in DOMAINB which has been migrated from CHILD1 and has its SIDHistory migrated with it. Use a tool which invokes LookupAccountName() to locate the SID for the username: CHILD1\username. LookupAccountName is explained here: &lt;a href="http://msdn.microsoft.com/en-us/library/aa379159(v=vs.85"&gt;http://msdn.microsoft.com/en-us/library/aa379159(v=vs.85&lt;/a&gt;). I had access to a private tool which would do these queries for us. I suspect that &lt;a href="http://live.sysinternals.com/psgetsid.exe" target="_blank"&gt;PsGetSid&lt;/a&gt; from Sysinternals would be able to help out here too, but we never tried it.&lt;/li&gt;    &lt;li&gt;The LsaCache on SPS must be large enough to sure that the entries which are queried are never overwritten by entries from DOMAINB. Set the reg value &lt;font face="Courier New"&gt;HKLM\System\CurrentControlSet\Contol\Lsa\LsaLookupCacheMaxSize = (DWORD) = 0x2000 (8192 decimal&lt;/font&gt;). If this value does not exist the system uses a default cache size of 128 entries, which is overwritten too quickly on the busy SPS servers. 8192 entries on a pair of load balanced servers should be able to hold all SIDs for all users accessing the SPS site in the 2 forests (if your forest has more users, you’ll need to increase this.&lt;/li&gt;    &lt;li&gt;This is a workaround. The real fix is to have the users who are migrated from CHILD1.domain.com to domainB.com with SIDHistory should use their migrated accounts immediately. After the migration, their CHILD1 accounts should be disabled/deleted and SIDHistory should be removed from the DOMAINB accounts. This is an operationally very difficult action to do as it does not allow for an easy testing path or roll-back path.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;To view the actions as they are performed by LSA Lookups, add these 2 DWORDs to the registry under &lt;font face="Courier New"&gt;HKLM\System\CurrentControlSet\Control\Lsa\&lt;/font&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Courier New"&gt;LspDbgTraceOptions = 0x1&lt;/font&gt; (1 means “log to a file”, the file is C:\Windows\Debug\Lsp.log)&lt;/li&gt;    &lt;li&gt;&lt;font face="Courier New"&gt;LspDbgInfoLevel = 0x88888888&lt;/font&gt; (all 8‘s in hex means “log as verbose as possible”)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These keys are explained here:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ff428139(v=ws.10).aspx"&gt;http://technet.microsoft.com/en-us/library/ff428139(v=ws.10).aspx&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;So, all in all a little complicated, but the workaround to increase the value for &lt;font face="Courier New"&gt;LsaLookupCacheMaxSize&lt;/font&gt; and constantly running a script on the SPS server to query for the SID for usernames in CHILD1 (with a filter to target only users which had been migrated to domainB) worked well for the customer.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3526034" width="1" height="1"&gt;</description></item><item><title>Upgrading the ADMX Central Store files from Windows 7/2008R2 to Windows 8/2012</title><link>http://blogs.technet.com/b/craigf/archive/2012/08/28/upgrading-the-admx-central-store-files-from-windows-7-2008r2-to-windows-8-2012.aspx</link><pubDate>Mon, 27 Aug 2012 22:03:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3516564</guid><dc:creator>Craig Forster</dc:creator><slash:comments>32</slash:comments><description>&lt;p&gt;##############################&lt;/p&gt;
&lt;p&gt;###&amp;nbsp;&amp;nbsp; UPDATE (22 March 2013)&amp;nbsp;&amp;nbsp; ###&lt;/p&gt;
&lt;p&gt;The ADMX and ADML files for Windows 8 and Windows Server 2012 are now available as a separate download. This includes 185 ADMX files, and is the complete set of all ADMX files for these OSes. Please use this download instead of the instructions in this post to create your super-set of updated ADMX/ADML files.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=36991"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=36991&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;##############################&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A while back I posted something similar regarding upgrading the PolicyDefinitions folder in SYSVOL from Windows Vista and Windows Server 2008 set of ADMX/ADML files to their newer versions in Windows 7 and Windows Server 2008 R2. That post is &lt;a href="http://blogs.technet.com/b/craigf/archive/2010/07/10/upgrading-the-admx-central-store-files-from-vista-to-windows-7.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Well, it&amp;rsquo;s now time to move that on as Windows 8 and Windows Server 2012 are now out.&lt;/p&gt;
&lt;p&gt;First off, all ADMX/ADML files have had their dates updated. While I didn&amp;rsquo;t look to see if all the contents of the files have changed, it&amp;rsquo;s probably best to assume every file has changed and update all of them.&lt;/p&gt;
&lt;p&gt;One of them "(&amp;ldquo;InputPersonalization.admx&amp;rdquo;) has been removed since Windows 7. It controlled 1 setting, and this setting has been moved into the larger ControlPanel.admx. Meaning this admx/adml can be deleted once the newer ControlPanel.admx file is copied to the PolicyDefinitions folder.&lt;/p&gt;
&lt;p&gt;Windows 8 and Windows Server 2012 offer a range of new features (he says putting it mildly), and there are new admx/adml files for these. So make sure you include these in your update&lt;/p&gt;
&lt;h4&gt;ADMX/ADML files new in Windows 8 and Windows Server 2012&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style="width: 276px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="274"&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: small;"&gt;AppxPackageManager.admx &lt;br /&gt;AppXRuntime.admx &lt;br /&gt;DeviceCompat.admx &lt;br /&gt;DeviceSetup.admx &lt;br /&gt;EAIME.admx &lt;br /&gt;EdgeUI.admx &lt;br /&gt;EncryptFilesonMove.admx &lt;br /&gt;FileServerVSSAgent.admx &lt;br /&gt;FileServerVSSProvider.admx &lt;br /&gt;hotspotauth.admx &lt;br /&gt;LocationProviderAdm.admx &lt;br /&gt;msched.admx &lt;br /&gt;NCSI.admx &lt;br /&gt;NetworkIsolation.admx &lt;br /&gt; Printing2.admx &lt;br /&gt;Servicing.admx &lt;br /&gt;SettingSync.admx &lt;br /&gt;srm-fci.admx &lt;br /&gt;StartMenu.admx &lt;br /&gt;WCM.admx &lt;br /&gt;WinStoreUI.admx &lt;br /&gt;wlansvc.admx &lt;br /&gt;WPN.admx &lt;br /&gt;wwansvc.admx&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As with the previous operating systems, there are some admx/adml files which exist on the server SKU which do not also exist on the client SKU, and vice versa:&lt;/p&gt;
&lt;h4&gt;ADMX/ADML files which exist on Windows Server 2012 but do NOT exist on Windows 8&lt;/h4&gt;
&lt;table style="width: 400px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;
&lt;blockquote style="margin-right: 0px;" dir="ltr"&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: small;"&gt;adfs.admx &lt;br /&gt;FileServerVSSAgent.admx &lt;br /&gt;GroupPolicy-Server.admx &lt;br /&gt; MMCSnapIns2.admx &lt;br /&gt;NAPXPQec.admx &lt;br /&gt;PswdSync.admx &lt;br /&gt;Snis.admx &lt;br /&gt;TerminalServer-Server.admx &lt;br /&gt;WindowsServer.admx&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;ADMX/ADML files which exist on Windows 8 but do NOT exist on Windows Server 2012&lt;/h4&gt;
&lt;table style="width: 400px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="400"&gt;
&lt;blockquote style="margin-right: 0px;" dir="ltr"&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: small;"&gt;DeviceRedirection.admx &lt;br /&gt;sdiagschd.admx&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;And the easy way to get all the possible ADMX/ADML files for a particular OS without having to install all the roles/features is to simply copy them out of the winsxs directory (replace en-US in the commands below if your OS is installed in a language other than English). Here is a sample set of commands which can do this for you. You&amp;rsquo;d need to run this on both a Windows 8 and Windows Server 2012 computers to capture all possible admx/adml files.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: x-small;"&gt;cd /d %windir%\winsxs &lt;br /&gt;dir *.admx /s /b &amp;gt; %USERPROFILE%\Desktop\admx.txt &lt;br /&gt;dir *.adml /s /b | find /i "en-us" &amp;gt; %USERPROFILE%\Desktop\adml_en-us.txt&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size: x-small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Courier New; font-size: x-small;"&gt;mkdir %USERPROFILE%\Desktop\PolicyDefinitions &lt;br /&gt;mkdir %USERPROFILE%\Desktop\PolicyDefinitions\en-US &lt;br /&gt; FOR /F %i IN (%USERPROFILE%\Desktop\admx.txt) DO copy %i %USERPROFILE%\Desktop\PolicyDefinitions\ &lt;br /&gt; FOR /F %i IN (%USERPROFILE%\Desktop\adml_en-us.txt) DO copy %i %USERPROFILE%\Desktop\PolicyDefinitions\en-US\&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I hope that helps you with your admx/adml upgrade.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Craig&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3516564" width="1" height="1"&gt;</description></item><item><title>Using Delegation in Scheduled Tasks</title><link>http://blogs.technet.com/b/craigf/archive/2011/03/15/using-delegation-in-scheduled-tasks.aspx</link><pubDate>Tue, 15 Mar 2011 10:59:25 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3412890</guid><dc:creator>Craig Forster</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3412890</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2011/03/15/using-delegation-in-scheduled-tasks.aspx#comments</comments><description>&lt;p&gt;This blog is about the ability in Windows 7 and Windows Server 2008 R2 to apply a SID to every scheduled task and use that SID to apply permissions elsewhere in the Operating System.&lt;/p&gt;  &lt;p&gt;Services already have this feature from Vista and newer. The idea is the same; take the simple name for the service (or in that case of scheduled tasks in 7/R2 the path to the scheduled task) and compute a predictable SID based on that name. Have a look at the permissions applied to C:\Windows\System32\LogFiles\Firewall to see this in action. On the permissions of this folder, there is an ACE for a “group” called MpsSvc, which is the short name for the Windows Firewall service. In this way, even though the service is set to start as “Local Service”, not all other services which also run as this same account can see into the Firewall logs, only the firewall service itself has access.&lt;/p&gt;  &lt;p&gt;So every scheduled task can have a SID computed for it – this new feature is described here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ee695875(v=vs.85).aspx" href="http://msdn.microsoft.com/en-us/library/ee695875(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ee695875(v=vs.85).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And the way to locate what the predicable SID for a given service name is to run:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;schtasks /showsid /TN “TaskName”&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;With this SID, you can now assign permissions to resources. For example, you could use icacls to apply permission to a folder, below we are granting an NT TASK (SID starts with S-1-5-87) modify permission to the folder C:\SomeFolder:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;icacls C:\SomeFolder /grant *S-1-5-87-xxxx-yyyy-zzzz:(M)&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now, if you go and setup your task in the GUI, and run these commands, you will see icacls report back:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;No mapping between account names and security IDs was done.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;What went wrong?&lt;/p&gt;  &lt;p&gt;First you need to make sure that the scheduled task is configured for Windows 7 or Windows Server 2008 R2 and is using either “Network Service” or “Local Service”:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-80-metablogapi/8105.image_5F00_4FB45533.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-80-metablogapi/5543.image_5F00_thumb_5F00_14ECAC5D.png" width="422" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then you need to make the task use the Unified Scheduling Engine so that it registers the SID with the list of “well known SIDs” for the system. But there is no check-box for this setting, and it is disabled by default. What to do?&lt;/p&gt;  &lt;p&gt;Export your task as an XML file, locate the line which reads:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;UseUnifiedSchedulingEngine&amp;gt;&lt;strong&gt;False&lt;/strong&gt;&amp;lt;/UseUnifiedSchedulingEngine&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And change that “False” to “True”:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;UseUnifiedSchedulingEngine&amp;gt;&lt;strong&gt;True&lt;/strong&gt;&amp;lt;/UseUnifiedSchedulingEngine&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;With that changed, remove your task and import the XML file you modified above.&lt;/p&gt;  &lt;p&gt;Because the SID is a predicable calculation of the path to the task, so long as you recreate the task with the same name and in the same folder, the SID will remain the same and your icacls command will now work as expected, and only that scheduled task will have access to the file or folder to specify.&lt;/p&gt;  &lt;p&gt;The Unified Scheduling Engine leverages the Unified Background Process Manager (UBPM), which is described further here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/b/askperf/archive/2009/10/04/windows-7-windows-server-2008-r2-unified-background-process-manager-ubpm.aspx" href="http://blogs.technet.com/b/askperf/archive/2009/10/04/windows-7-windows-server-2008-r2-unified-background-process-manager-ubpm.aspx"&gt;http://blogs.technet.com/b/askperf/archive/2009/10/04/windows-7-windows-server-2008-r2-unified-background-process-manager-ubpm.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3412890" width="1" height="1"&gt;</description></item><item><title>Getting error 0xC004F074 when activating against KMS server</title><link>http://blogs.technet.com/b/craigf/archive/2011/03/03/getting-error-0xc004f074-when-activating-against-kms-server.aspx</link><pubDate>Thu, 03 Mar 2011 09:43:44 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3391502</guid><dc:creator>Craig Forster</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3391502</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2011/03/03/getting-error-0xc004f074-when-activating-against-kms-server.aspx#comments</comments><description>&lt;p&gt;Hi&lt;/p&gt;  &lt;p&gt;This error code is a very generic output to a KMS client having problems activating. To view your output, run slmgr.vbs –ato&lt;/p&gt;  &lt;p&gt;When troubleshooting this problem, we checked the following details – if any were a problem, they would generate this error code:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;DNS record not published at _VLMCS._tcp.client.domain. This must be an SRV record, which the KMS server will automatically register. If you have disabled this, you will need to use a GPO on the clients to point them to the correct KMS server to use &lt;/li&gt;    &lt;li&gt;No network connectivity from the KMS client to the MS server on the KMS port (tcp/1688 by default). Install telnet on the client and run telnet KMS.Server.Name 1688 and make sure the screen goes blank &lt;/li&gt;    &lt;li&gt;Not more than 4 hours time difference between KMS server and client. Check that your time zones are correct. If using server core, run timedate.cpl &lt;/li&gt;    &lt;li&gt;No major hardware changes to the KMS server. If the KMS server is a VM and you have added a number of new devices, CPUs, memory etc, or P2Ved you will need to reactivate your KMS license &lt;/li&gt;    &lt;li&gt;The KMS service must have the keys to issue for the KMS client requesting a license. For example, if the KMS server is Windows Server 2008 and you are trying to activate Windows 7, you will need an update installed on the KMS server AND the correct KMS key for Windows 7. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And the last one was the problem we hit: Our KMS server was Windows Server 2008 R2, just as the KMS clients. We’d crossed the threshold of 5 servers. But they still would not activate. The problem was that there are different license “channels” for Windows Server. They are described here: &lt;a title="http://technet.microsoft.com/en-us/library/ff793411.aspx" href="http://technet.microsoft.com/en-us/library/ff793411.aspx"&gt;http://technet.microsoft.com/en-us/library/ff793411.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our servers which were having problems activating were all Windows Server 2008 R2 Datacenter Edition, and we had a “B Channel” KMS license installed on the KMS server.&lt;/p&gt;  &lt;p&gt;We followed these steps on the KMS server to install the correct channel license:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;slmgr -upk &lt;/li&gt;    &lt;li&gt;slmgr -cpky &lt;/li&gt;    &lt;li&gt;slmgr -ipk &amp;lt;KMS Host Product Key - channel C&amp;gt; &lt;/li&gt;    &lt;li&gt;slmgr -ato &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;After doing the above, we ran slmgr -ato on the Windows Server 2008 R2 Datacenter Edition servers. Note that “Channel C” is able to active all lower level channels.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3391502" width="1" height="1"&gt;</description></item><item><title>Cannot bring Cluster Name resource online</title><link>http://blogs.technet.com/b/craigf/archive/2011/02/04/cannot-bring-cluster-name-resource-online.aspx</link><pubDate>Fri, 04 Feb 2011 10:06:41 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3384973</guid><dc:creator>Craig Forster</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3384973</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2011/02/04/cannot-bring-cluster-name-resource-online.aspx#comments</comments><description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;p&gt;Another quick post with a non-very-obvious solution, this time on a new Windows Server 2008 R2 cluster.&lt;/p&gt;  &lt;p&gt;The case went like this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The OSes of the nodes were built according to the security requirements of the customer &lt;/li&gt;    &lt;li&gt;We added the Failover Clustering feature and attempted to create a new cluster while running the wizard as a member of Domain Admins who has Administrator permissions on all the nodes &lt;/li&gt;    &lt;li&gt;The computer account in the domain was created for the Cluster Name Object (CNO), the account ‘SELF’ had full control &lt;/li&gt;    &lt;li&gt;The wizard completed fine and the summary report showed no problems &lt;/li&gt;    &lt;li&gt;The Cluster Name resource couldn’t come online &lt;/li&gt;    &lt;li&gt;On the nodes the event ID 1206 was logged, which said:      &lt;ul&gt;       &lt;li&gt;&lt;font size="1"&gt;&lt;font face="Courier New"&gt;Cluster network name resource 'Cluster Name' cannot be brought online. The computer object associated with the resource could not be updated in domain 'domain.name'. The error code was 'Unable to find computer account on DC where it was created'. The cluster identity 'CLUSTER01$' may lack permissions required to update the object. Please work with your domain administrator to ensure that the cluster identity can update computer objects in the domain&lt;/font&gt; &lt;/font&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;More confusing still, in the security log of the DC, there were “Kerberos pre-authentication failed” errors for the CNOs computer account, indicating that the wrong password was being used &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The problem turned out to be that the built-in group “Authenticated Users” had been removed from the built-in group “Users” on the OS of each of the nodes. The customer didn’t want to add “Authenticated Users” back into this group as that would have granted too many accounts too many rights. The work-around we put in was to create a domain group and nest the newly created CNO into this group. This group was placed into the “Users” built in group on all the cluster nodes. In this way, the CNO now has membership in the built-in group “Users” on each of the nodes.&lt;/p&gt;  &lt;p&gt;We needed to reboot all of the nodes before this change would take effect.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I hope this helps someone out there.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3384973" width="1" height="1"&gt;</description></item><item><title>Delegating access in AD to BitLocker recovery information</title><link>http://blogs.technet.com/b/craigf/archive/2011/01/26/delegating-access-in-ad-to-bitlocker-recovery-information.aspx</link><pubDate>Wed, 26 Jan 2011 10:31:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3382609</guid><dc:creator>Craig Forster</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/craigf/rsscomments.aspx?WeblogPostID=3382609</wfw:commentRss><comments>http://blogs.technet.com/b/craigf/archive/2011/01/26/delegating-access-in-ad-to-bitlocker-recovery-information.aspx#comments</comments><description>&lt;p&gt;Normally in AD, all attributes are readable by &amp;ldquo;Authenticated Users&amp;rdquo;. Some attributes should inherit permissions, but should not be readable by &amp;ldquo;just anyone&amp;rdquo; To protect attributes like this, they can be marked as &amp;ldquo;confidential&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;There are 3 attributes relating BitLocker to which are marked in the schema as &amp;ldquo;confidential&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;This is done by marking the searchFlags attribute as enabled for bit 7 (128 decimal) in the schema where the attribute is defined. See here for more information on searchFlags: &lt;a href="http://support.microsoft.com/kb/922836"&gt;http://support.microsoft.com/kb/922836&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;These attributes are: &lt;/p&gt;
&lt;table cellpadding="0" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="228" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Attribute&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Applies to Object&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Used for&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="228" valign="top"&gt;
&lt;p&gt;msTPM-OwnerInformation&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;computer&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;Contains the owner information of a computers TPM.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="228" valign="top"&gt;
&lt;p&gt;msFVE-KeyPackage&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;msFVE-RecoveryInformation&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;Contains a volumes BitLocker encryption key secured by the corresponding recovery password.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="228" valign="top"&gt;
&lt;p&gt;msFVE-RecoveryPassword&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;msFVE-RecoveryInformation&lt;/p&gt;
&lt;/td&gt;
&lt;td width="240" valign="top"&gt;
&lt;p&gt;Contains a password that can recover a BitLocker-encrypted volume.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;An object of type &amp;ldquo;msFVE-RecoveryInformation&amp;rdquo; is created for every encrypted volume and is stored as a sub-object of the computers object where the volume was encrypted.&lt;/p&gt;
&lt;p&gt;Simply granting &amp;ldquo;read&amp;rdquo; access to these attributes will not allow a user to read the information in these attributes. A user who wants to read the attribute must also have an Access Mask for &amp;ldquo;Control_Access&amp;rdquo;. This is a special type of ACE (Access Control Entry). See here for more information on Access Masks: &lt;a href="http://msdn.microsoft.com/en-us/library/aa374896(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa374896(v=vs.85).aspx&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;GUI Tool to Manage Permissions&lt;/h2&gt;
&lt;p&gt;The only GUI tool which can set and view these special Control_Access ACEs is LDP.exe (using the version from Windows Server 2003 R2 ADAM or newer). This is shown below:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-65-80-metablogapi/6201.Control_5F00_Access_5F00_BitLockerPassword_5F00_0156C149.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80/1538.DelegateBitLocker.png"&gt;&lt;img src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-80/1538.DelegateBitLocker.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The "Control_Access" flag is needed in ADDITION to the normal "Read Propery"&amp;nbsp;right. The "Control_Access" flag gets you past the confidentiality bit. You still need to be able to read the contents of the attribute.&lt;/p&gt;
&lt;p&gt;Apply the permission once at the top of EACH DOMAIN where you need to delegate access to the recovery information of BitLocker volumes. Usually this does not include forest root domains or resource forests. Ensure the &amp;ldquo;inheritance&amp;rdquo; box is checked on each ACE so that it propagates to every msFVE-RecoveryInformation or Computer object and only to its relevant attributes.&lt;/p&gt;
&lt;p&gt;(Note from Ryans comment below: You can aply this permission anywhere in the OU structure if you'd like to split the delegation bewteen groups - e.g. Help Desk users can access the keys for Standard Workstations and the&amp;nbsp;Server Admins can access the keys for servers etc. You could apply the "read propery" ACE at the top of the domain to a super-group for everyone who is allowed to access the keys, and then have different groups able to use the "Control_Access" flags for their particular OUs. This will help limit ACE bloat in lsass.exe working set while still locking down the keys in the way you'd expect.)&lt;/p&gt;
&lt;p&gt;Here are sample scripts to add the "Control_Access" flag to the top of the domain:&lt;/p&gt;
&lt;h2&gt;DelegateBitLocker.vbs&lt;/h2&gt;
&lt;p&gt;Taken from: &lt;a href="http://technet.microsoft.com/en-us/library/cc771778(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc771778(WS.10).aspx&lt;/a&gt;&lt;/p&gt;
&lt;table width="503" cellpadding="2" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="501" valign="top"&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'To refer to other groups, change the group name (ex: change to "DOMAIN\Help Desk Staff") &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;strGroupName = "BitLocker Recoverers" &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Access Control Entry (ACE) constants &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ----------------------------------------------------------- &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_ACETYPE_ENUM enumeration &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &amp;amp;H5 'Allows an object to do something &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_ACEFLAG_ENUM enumeration &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_ACEFLAG_INHERIT_ACE = &amp;amp;H2 'ACE applies to target and inherited child objects &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &amp;amp;H8 'ACE does NOT apply to target (parent) object &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_RIGHTS_ENUM enumeration &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_RIGHT_DS_CONTROL_ACCESS = &amp;amp;H100 'The right to view confidential attributes &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_RIGHT_DS_READ_PROP = &amp;amp;H10 ' The right to read attribute values &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_FLAGTYPE_ENUM enumeration &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_FLAG_OBJECT_TYPE_PRESENT = &amp;amp;H1 'Target object type is present in the ACE &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &amp;amp;H2 'Target inherited object type is present in the ACE &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ----------------------------------------------------------- &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' BitLocker schema object GUID's &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- ms-FVE-RecoveryInformation object: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' includes the BitLocker recovery password and key package attributes &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION = "{EA715D30-8F53-40D0-BD1E-6109186D782C}" &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- ms-FVE-RecoveryPassword attribute: 48-digit numerical password &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;SCHEMA_GUID_MS_FVE_RECOVERYPASSWORD = "{43061AC1-C8AD-4CCC-B785-2BFAC20FC60A}" &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- ms-FVE-KeyPackage attribute: binary package for repairing damages &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;SCHEMA_GUID_MS_FVE_KEYPACKAGE = "{1FD55EA8-88A7-47DC-8129-0DAA97186A54}" &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- Computer object &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;SCHEMA_GUID_COMPUTER = "{BF967A86-0DE6-11D0-A285-00AA003049E2}" &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'Reference: "Platform SDK: Active Directory Schema" &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Set up the ACE to allow reading of all BitLocker recovery information properties &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objAce1 = createObject("AccessControlEntry") &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.AceFlags = ADS_ACEFLAG_INHERIT_ACE + ADS_ACEFLAG_INHERIT_ONLY_ACE &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.Flags = ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.Trustee = strGroupName &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS + ADS_RIGHT_DS_READ_PROP &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.InheritedObjectType = SCHEMA_GUID_MS_FVE_RECOVERYINFORMATION &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Note: ObjectType is left blank above to allow reading of all properties &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Connect to Discretional ACL (DACL) for domain object &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objRootLDAP = GetObject("LDAP://rootDSE") &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;strPathToDomain = "LDAP://" &amp;amp; objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objDomain = GetObject(strPathToDomain) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;WScript.Echo "Accessing object: " + objDomain.Get("distinguishedName") &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objDescriptor = objDomain.Get("ntSecurityDescriptor") &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objDacl = objDescriptor.DiscretionaryAcl &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Add the ACEs to the Discretionary ACL (DACL) and set the DACL &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' -----------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDacl.AddAce objAce1 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDescriptor.DiscretionaryAcl = objDacl &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDomain.Put "ntSecurityDescriptor", Array(objDescriptor) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDomain.SetInfo &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;WScript.Echo "SUCCESS!"&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;DelegateTMPOwners.vbs&lt;/h2&gt;
&lt;p&gt;Taken from: &lt;a href="http://technet.microsoft.com/en-us/library/cc771778(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc771778(WS.10).aspx&lt;/a&gt;&lt;/p&gt;
&lt;table width="506" cellpadding="2" cellspacing="0" border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="504" valign="top"&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'To refer to other groups, change the group name (ex: change to "DOMAIN\TPM Owners")&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;strGroupName = "TPM Owners"&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Access Control Entry (ACE) constants &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_ACETYPE_ENUM enumeration&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &amp;amp;H5 'Allows an object to do something&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_ACEFLAG_ENUM enumeration&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_ACEFLAG_INHERIT_ACE = &amp;amp;H2 'ACE applies to target and inherited child objects&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &amp;amp;H8 'ACE does NOT apply to target (parent) object&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_RIGHTS_ENUM enumeration&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_RIGHT_DS_CONTROL_ACCESS = &amp;amp;H100 'The right to view confidential attributes&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_RIGHT_DS_READ_PROP = &amp;amp;H10 ' The right to read attribute values&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- From the ADS_FLAGTYPE_ENUM enumeration&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_FLAG_OBJECT_TYPE_PRESENT = &amp;amp;H1 'Target object type is present in the ACE &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &amp;amp;H2 'Target inherited object type is present in the ACE &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' TPM and FVE schema object GUID's &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- ms-TPM-OwnerInformation attribute: SHA-1 hash of the TPM owner password&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;SCHEMA_GUID_MS_TPM_OWNERINFORMATION = "{AA4E1A6D-550D-4E05-8C35-4AFCB917A9FE}"&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'- Computer object&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;SCHEMA_GUID_COMPUTER = "{BF967A86-0DE6-11D0-A285-00AA003049E2}"&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;'Reference: "Platform SDK: Active Directory Schema"&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Set up the ACE to allow reading of TPM owner information&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objAce1 = createObject("AccessControlEntry")&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.AceFlags = ADS_ACEFLAG_INHERIT_ACE + ADS_ACEFLAG_INHERIT_ONLY_ACE&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT + ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.Trustee = strGroupName&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS + ADS_RIGHT_DS_READ_PROP&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.ObjectType = SCHEMA_GUID_MS_TPM_OWNERINFORMATION&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objAce1.InheritedObjectType = SCHEMA_GUID_COMPUTER&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Connect to Discretional ACL (DACL) for domain object&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objRootLDAP = GetObject("LDAP://rootDSE")&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;strPathToDomain = "LDAP://" &amp;amp; objRootLDAP.Get("defaultNamingContext") ' e.g. string dc=fabrikam,dc=com&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objDomain = GetObject(strPathToDomain)&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;WScript.Echo "Accessing object: " + objDomain.Get("distinguishedName")&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objDescriptor = objDomain.Get("ntSecurityDescriptor")&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;Set objDacl = objDescriptor.DiscretionaryAcl&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' Add the ACEs to the Discretionary ACL (DACL) and set the DACL&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;' ------------------------------------------------------------&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDacl.AddAce objAce1&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDescriptor.DiscretionaryAcl = objDacl&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDomain.Put "ntSecurityDescriptor", Array(objDescriptor)&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;objDomain.SetInfo&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Courier New; font-size: xx-small;"&gt;WScript.Echo "SUCCESS!"&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;And this script can help pull the assigned ACEs out to show you who has been delegated access: &lt;a href="http://gallery.technet.microsoft.com/ScriptCenter/0bd4af9e-968a-4ae6-9950-2b2450afda37/"&gt;http://gallery.technet.microsoft.com/ScriptCenter/0bd4af9e-968a-4ae6-9950-2b2450afda37/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3382609" width="1" height="1"&gt;</description></item></channel></rss>