<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>My Fried Tech!</title>
  <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/" />
  <link rel="self" href="http://www.myfriedmind.com/techBlog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2010-03-16T14:27:45.8999943-05:00</updated>
  <author>
    <name>Matt Mcknight</name>
  </author>
  <subtitle>oddities from my work</subtitle>
  <id>http://www.myfriedmind.com/techBlog/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <entry>
    <title>ISA 2006, Sharepoint 2010 giving HTTP 500 internal server error on HTTP Filter</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2010/03/16/ISA2006Sharepoint2010GivingHTTP500InternalServerErrorOnHTTPFilter.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,cdda7744-3202-4fdb-b4ac-f6dcafac4ea2.aspx</id>
    <published>2010-03-16T14:26:51.76-05:00</published>
    <updated>2010-03-16T14:27:45.8999943-05:00</updated>
    <category term="Isa 2006" label="Isa 2006" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Isa2006.aspx" />
    <category term="Sharepoint 2010" label="Sharepoint 2010" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sharepoint2010.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently when playing around with the Sharepoint 2010 beta I extended a site to use
Forms and passed that through ISA 2006.
</p>
        <p>
This is all very basic stuff, there are a number of good references on how to set
this up, but what I did not expect was the http 500 internal error on my browser (see
below).
</p>
        <img src="http://www.myfriedmind.com/techBlog/content/binary/sp2010HttpFilterError.JPG" border="1" />
        <p>
The solution was to modify the HTTP filter (egad! an error message that actually gives
the correct problem!) within ISA for that Rule (right-click the rule and select "Configure
HTTP") and uncheck "Verify normalization" (see image below). I do not know if this
is restricted to Sharepoint, but I suspect that will all the razzle-dazzle that SP2010
is trying to pull off it is tripping over the big feet of ISA... 
<br /></p>
        <img src="http://www.myfriedmind.com/techBlog/content/binary/sp2010HttpFilterFix.JPG" border="0" />
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=cdda7744-3202-4fdb-b4ac-f6dcafac4ea2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Sharepoint 2010 Configuration Wizard "Failed To Register Sharepoint Services" with System.Security.Cryptography.CryptographicException Object Already Exists</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2010/03/12/Sharepoint2010ConfigurationWizardFailedToRegisterSharepointServicesWithSystemSecurityCryptographyCryptographicExceptionObjectAlreadyExists.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,b34d9c25-df01-4292-bf34-8195bd0171f6.aspx</id>
    <published>2010-03-12T13:08:17.9321015-06:00</published>
    <updated>2010-03-12T13:08:17.9321015-06:00</updated>
    <category term="Sharepoint 2010" label="Sharepoint 2010" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sharepoint2010.aspx" />
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Working on the SP2010 beta I bumped into
an issue with search. I decided, after various attempts to fix it different ways,
to rerun the Sharepoint 2010 Products Configuration Wizard. But when I did I ran into
an error on Step #5 - namely a System.Security.Cryptography.CryptographicException
of "Object Already Exists".<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/rsaSP2010Error.jpg" border="0" /><br /><p>
This was verified by checking the logs. I tried many, many things to resolve it, including
making sure "Network Service" had full control over the 14-hive, per <a href="http://www.dev4side.com/community/blog/2010/3/1/principal-errors-during-sharepoint-2010-beta-2-installation.aspx">this
blog</a> and setting up Network Service using the aspnet_regiis -SampleKeys, etc.
I even disabled the UAC (<a href="http://www.myfriedmind.com/techBlog/2009/10/20/UACAndDomainAdminsPermissionsIssueOrPocketFullOfKryptonite.aspx">see
my earlier post for an explanation</a>).
</p><p>
No dice.<br /></p><p>
The resolution lay, as you may be suspecting, in messed up perms on the RSA folder,
specifically C:\Program Data\Microsoft\Crypto\RSA\<font color="#ff0000">MachineKeys</font>.
I had checked to the RSA level and Administrators had full perms (I was logged on
as with an Administrative account) but I had not taken the next step and checked MachineKeys.
</p><p>
Turns out that that folder had removed all perms from Adminstrators. I ended up having
to take ownership of the folder and give Admins full perms again. Sure enough - it
worked...
</p><p>
As a bonus it DID fix my Search problem (I was getting "The search request was unable
to connect to the Search Service.").
</p><p>
Maybe.<br /></p><img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=b34d9c25-df01-4292-bf34-8195bd0171f6" /></div>
    </content>
  </entry>
  <entry>
    <title>Sharepoint 2010 Products Configuration Wizard gives you "Unhandled exception" 0x80070005 (E_ACCESSDENIED)</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2010/03/12/Sharepoint2010ProductsConfigurationWizardGivesYouUnhandledException0x80070005EACCESSDENIED.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,b65df6c7-ec01-4e20-8bb3-38efcaa8a7e9.aspx</id>
    <published>2010-03-12T11:19:22.7345031-06:00</published>
    <updated>2010-03-12T11:19:22.7345031-06:00</updated>
    <category term="Sharepoint 2010" label="Sharepoint 2010" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sharepoint2010.aspx" />
    <category term="Sql 2008" label="Sql 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sql2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Trying to run the SP 2010 Config Wizard
to resolve a Search issue I ran into the problem shown below.<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/sp2010configwizerror.JPG" border="0" /><br /><br />
The resolution was that I was logged in with an account that was not used in the SQL
database (remember you need the perms)...<br /><img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=b65df6c7-ec01-4e20-8bb3-38efcaa8a7e9" /></div>
    </content>
  </entry>
  <entry>
    <title>Sql 2008 and 'Agent XPs' component is turned off as part of the security configuration of this server when creating a Maintenance Plan</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2010/02/09/Sql2008AndAgentXPsComponentIsTurnedOffAsPartOfTheSecurityConfigurationOfThisServerWhenCreatingAMaintenancePlan.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,abf61892-5a93-4794-93b4-a5ebc68c18eb.aspx</id>
    <published>2010-02-09T13:55:42.1805226-06:00</published>
    <updated>2010-02-09T13:55:42.1805226-06:00</updated>
    <category term="Sql" label="Sql" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sql.aspx" />
    <category term="Sql 2008" label="Sql 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sql2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">If you try to create a Maintenance Plan
on Sql 2008 you may ge<img src="http://www.myfriedmind.com/techBlog/content/binary/AgentXPSError.JPG" align="right" border="0" />t
the following error:<br />
'Agent XPs' component is turned off as part of the security configuration of this
server. A system administrator can enable the use of 'Agent XPs' by using sp_configure....<br /><br />
The reason is simple - the Sql Server Agent Service, which handles Maintenance plans
among other things, is not started automatically. The service is set to Manual start.
The solution is simple - just set it to Automatic (so it starts in case of a reboot)
and start it up!<br /><br />
You can, of course, do this through windows services, but you can also do it through
the Sql tools - specifically the "Sql Server Configuration Manager".<br /><br /><h3>Step 1 - open up the Sql Server Configuration Manager and click on 'Sql Server
Services in the left pane. You will see that the SQL Server Agetn is Stopped and has
its 'Start Mode' set to Manual.
</h3><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/AgentXpsInfo.JPG" border="0" /><br /><br /><h3>Step 2 - double click on the Sql Server Agent in the right tab and its properties
will appear. Click on the 'Start' button to begin it running.
</h3><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/AgentXPSStartService.JPG" border="0" /><br /><br /><h3>Step 3 - now click on the 'Service' tab and change the Start Mode to Automatic.
This will ensure that if your server restarts this service will start as well (and
hence you will get your Maintenance plans.
</h3><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/AgentXpsServiceSetting.JPG" border="0" /><br /><br />
Now, give yourself a raise and take the rest of the day off....<br /><img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=abf61892-5a93-4794-93b4-a5ebc68c18eb" /></div>
    </content>
  </entry>
  <entry>
    <title>Sharepoint 2010 Beta and PDF Icons</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2010/02/05/Sharepoint2010BetaAndPDFIcons.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,29067664-d84e-4529-a1fb-37969ea0804e.aspx</id>
    <published>2010-02-05T10:12:13.7210526-06:00</published>
    <updated>2010-02-05T10:12:13.7210526-06:00</updated>
    <category term="Sharepoint 2010" label="Sharepoint 2010" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sharepoint2010.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Just a quick note that foxit software's instructions on adding a pdf icon apply to
Sharepoint 2010 just like they did to MOSS 2007: <a href="http://www.foxitsoftware.com/pdf/ifilter/installation.html" target="_blank">http://www.foxitsoftware.com/pdf/ifilter/installation.html</a>.
The only difference is that you do this in hive 14 not hive 12 (ie Drive:\Program
Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\). 
</p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=29067664-d84e-4529-a1fb-37969ea0804e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Exchange 2007 Management Shell Pipelining example</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/12/09/Exchange2007ManagementShellPipeliningExample.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,e92a6c5a-2605-4719-9d17-f8036905e7e2.aspx</id>
    <published>2009-12-09T12:10:03.813-06:00</published>
    <updated>2009-12-09T12:11:14.3608253-06:00</updated>
    <category term="Exchange 2007" label="Exchange 2007" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Exchange2007.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
There are many nice things to like about x07's Management Shell, but one of the best
is pipelining. In short what pipelining does is allow you to feed the results from
one cmdlet into another. As you can imagine that increases your capability exponentially.
It is called pipelining because you use the pipe (|) symbol to separate the cmdlets.<br /></p>
        <p>
Let us say, for example, that you want to grant a Full Access perms to the mailbox
Bob.Marley for Lenny.Scott:<br /></p>
        <p>
Get-Mailbox Bob.Marley | Add-MailboxPermission -User 'myDomain\Lenny.Scott' -AccessRights
FullAccess
</p>
        <p>
What if you want to give Lenny.Scott Full Access to ALL maillboxes:
</p>
        <p>
Get-Mailbox | Add-MailboxPermission -User 'myDomain\Lenny.Scott' -AccessRights FullAccess
</p>
        <p>
What if you want to give Lenny.Scott Full Access to only the mailboxes in the Sales
Database:
</p>
        <p>
Get-MailboxDatabase myX07Server\Sales | Get-Mailbox | Add-MailboxPermission -User
'myDomain\Lenny.Scott' -AccessRights FullAccess<img src="http://www.myfriedmind.com/techBlog/content/binary/caution.jpg" align="right" border="0" /></p>
        <p>
The above example shows how you can pipeline into another pipeline. However, if you
really wanted to do this you might use the Add-ADPermission cmdlet:
</p>
        <p>
Get-MailboxDatabase myX07Server\Sales | Add-ADPermission -User 'myDomain\Lenny.Scott'
-AccessRights GenericAll
</p>
        <p>
This capability is stunning in its power, which should also be a little terrifying. 
</p>
        <p>
Use With Caution...<br /></p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=e92a6c5a-2605-4719-9d17-f8036905e7e2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Man in the Middle Web Services and XML Serialization errors</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/11/19/ManInTheMiddleWebServicesAndXMLSerializationErrors.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,b41b4f63-6aaa-49cb-b1b8-de5b2dabfcea.aspx</id>
    <published>2009-11-19T16:29:18.324-06:00</published>
    <updated>2009-11-19T16:30:43.5282829-06:00</updated>
    <category term="Asp.Net" label="Asp.Net" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,AspNet.aspx" />
    <category term="c#" label="c#" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,c.aspx" />
    <category term="Coding Tricks" label="Coding Tricks" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,CodingTricks.aspx" />
    <category term="VB.Net" label="VB.Net" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,VBNet.aspx" />
    <category term="Web Services" label="Web Services" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,WebServices.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was setting up a Man in the Middle webservice to intercept a message coming in so
that I could do some processing of it on the side. Don't worry, it was our webservice.
My process is fairly simple:
</p>
        <ol>
          <li>
accept the submitted object 
</li>
          <li>
forward the object to the old web service 
</li>
          <li>
do what I wanted with the info</li>
        </ol>
        <p>
Step #2 appears fairly straightforward, and for the most part it is. 
</p>
        <ol>
          <li>
Create a (new) Web Service. 
</li>
          <li>
Expose the same public WebMethods. 
</li>
          <li>
Add a 'Web Reference' to the (old) Web Service 
</li>
          <li>
Create a new Web Service object of the old Web Service 
</li>
          <li>
Pass the received object onward</li>
        </ol>
        <p>
The problem that occurs is that because the (new) Web Service has to be all-inclusive
it creates its own object type. While this is acceptable in .Net (since it goes by
.net classnames) this gets all out of whack in the XML. This is because the XML uses
a different namespace process - and since the (new) Web Service uses the same object
as the (old) Web Service, albeit with a different .net namespace one of the things
that it includes as an Attribute is the XML namespace. So
</p>
        <ul>
          <li>
The two classes have different .net namespaces 
</li>
          <li>
The two classes have the exact same XML namespace</li>
        </ul>
        <p>
The compiler does not catch this because it is only looking at the .net namespace.
So it will give you all sorts of helpful suggestions. 
</p>
        <p>
However....
</p>
        <p>
There is a simpler way to do it. Basically, since you KNOW that the incoming and outgoing
objects are the same, you are simply going to override the class that the Web Reference
uses to tell it to use the original class.
</p>
        <p>
If you initially open up the Web Reference to your (old) Web Service you are not going
to see the file you need. You need to go up to the File Menu and select Project, Show
All Files. 
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/MiMXMLShowAll.gif" border="1" />
        </p>
        <p>
Now you will see the file that you want over in the Solution Exploerer -&gt; Reference.cs. 
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/MiMXMLReference.gif" border="1" />
        </p>
        <p>
Open that puppy up and make the necessary changes, just remember to wipe out the (new)
objects that will be in there. All you want to leave are the methods, and those should
now be passing the classes from the (old) Web Service.
</p>
        <p>
Happy coding!
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=b41b4f63-6aaa-49cb-b1b8-de5b2dabfcea" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Sql 2008 Disk Allocation Unit Size</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/11/10/Sql2008DiskAllocationUnitSize.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,d92d1c31-e8d7-41fd-98f7-3327b84f6160.aspx</id>
    <published>2009-11-10T11:22:50.5350093-06:00</published>
    <updated>2009-11-10T11:22:50.5350093-06:00</updated>
    <category term="Sql" label="Sql" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Sql.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Installing a new sql 2008 box and thought
I would throw out the reminder to partition the drives that sql uses to 64k (not the
default 4k) due to Sql's 'extents', which come in packages of eight 8k boxes...<br /><p></p><img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=d92d1c31-e8d7-41fd-98f7-3327b84f6160" /></div>
    </content>
  </entry>
  <entry>
    <title>Hyper-V, Windows 2008 R2, and 'MyVM' could not initialize error</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/10/29/HyperVWindows2008R2AndMyVMCouldNotInitializeError.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,b9c0d0ba-743f-47f7-bc53-45106be9bbf2.aspx</id>
    <published>2009-10-29T10:18:14.5383022-05:00</published>
    <updated>2009-10-29T10:18:14.5383022-05:00</updated>
    <category term="Virtual Server" label="Virtual Server" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,VirtualServer.aspx" />
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
There appears to be an issue with w08r2 when it comes to using Hyper-V. When
attempting to launch your VM you might encounter the error: The application
encountered an error while attempting to change the state of %yourVM%.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/vmRootPermsError.JPG" border="0" />
        </p>
        <p>
The solution seems very simple (thanks to this post) which is that you need
to give 'Authenticated Users' the 'List folder / read data' permission
at the root of the drive that contains the Virtual Machines (and you ONLY need
to do it at that level, not the ones below).
</p>
        <p>
Why this solves the problem I do not know, but here are the steps (with some pictures)
to walk you through the process:
</p>
        <p>
1 - Open up the root of the drive's properties and choose the Security tab. Click
on the Advanced button
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/vmRootPermsAdv.JPG" border="0" />
        </p>
        <p>
2. Click on 'Change Permissions'
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/vmRootPermsChange.JPG" border="0" />
        </p>
        <p>
3. Click on 'Add', Type in 'Authenticated Users' and hit the OK button, you should
see the screen below. Change the "Apply to:" to be "This folder only" and put a check
in to the "List folder / read data" check box. Click 'OK'
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/vmRootPermsSettings.JPG" border="0" />
        </p>
        <p>
4. Make sure NOT to check the 'Replace all child objects...' checkbox. Check your
settings, and click OK. Click OK to close the Properties screen for the drive and
you should be good to go.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/vmRootPermsNoCheck.JPG" border="0" />
        </p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=b9c0d0ba-743f-47f7-bc53-45106be9bbf2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Windows 2008 Cluster and Getting the Private Network to Work</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/10/22/Windows2008ClusterAndGettingThePrivateNetworkToWork.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,36e36dd3-cbbb-41e1-9f19-d35f5b921f71.aspx</id>
    <published>2009-10-22T14:59:15.5482762-05:00</published>
    <updated>2009-10-22T14:59:15.5482762-05:00</updated>
    <category term="Clustering" label="Clustering" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Clustering.aspx" />
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
When clustering two servers together you may still want to set up private network
connections. If you do hook a crossover cable and give it a different set of IPs from
your domain you may find that the private network does not working. Pinging will return
no responses. What you may have run into is that the Windows Firewall is interpreting
your little private network as being 'Public' and so is block all communications in.
</p>
        <p>
The solution depends on what flavor of w08 you are running. If you are running w08
you can go into the "Network and Sharing Center" and customize the network to be "Private"
which will allow communication through. If you are running w08r2 it is not so simple.
You have to go into Windows Firewall and explicitly tell it NOT to apply "Public"
rules to the adapter you are using for your private network. 
</p>
        <p>
Because a picture is worth a thousand words:
</p>
        <p>
Windows 2008 (non-R2)
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/w08ClusterNW0.gif" border="1" />
        </p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/w08ClusterNW1.gif" border="0" />
        </p>
        <p>
Windows 2008 R2
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/w08r2ClusterFW0.gif" border="1" />
        </p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/w08r2ClusterFW1.gif" border="0" />
        </p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/w08r2ClusterFW2.gif" border="0" />
        </p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=36e36dd3-cbbb-41e1-9f19-d35f5b921f71" />
      </div>
    </content>
  </entry>
  <entry>
    <title>UAC and Domain Admins Permissions Issue or Pocket Full of Kryptonite</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/10/20/UACAndDomainAdminsPermissionsIssueOrPocketFullOfKryptonite.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,a3987d9c-93f1-4926-8e93-7b6f148611ab.aspx</id>
    <published>2009-10-20T12:07:51.064-05:00</published>
    <updated>2009-10-20T14:46:15.2055012-05:00</updated>
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
When are Domain Admins NOT Domain Admins?<img src="http://www.myfriedmind.com/techBlog/content/binary/kryptonite.gif" align="right" border="0" /></p>
        <p>
I stumbled across some strange errors when using the UAC as a Non-Default Admin (NDA).
When logged in as an NDA and not the Built-In Administrator Account (BIAA) I ran into
permission issues with the User Access Control (UAC) turned on. It appeared as if
the w08 box (and w08r2) could not enumerate Domain Admins membership then the UAC
is turned on. Even when I gave Domain Admins Full Control of a folder (or a drive)
it would not recognize membership therein.
</p>
        <p>
More info (than you might want) on that at my entry here: <a href="http://www.myfriedmind.com/techBlog/2009/10/14/UACAndDomainAdminsPermissionsIssueOnWindows2008.aspx">http://www.myfriedmind.com/techBlog/2009/10/14/UACAndDomainAdminsPermissionsIssueOnWindows2008.aspx</a>. 
</p>
        <p>
This is the follow up to that, after I got a hold of MSoft. I called in and even though
it was the middle of the night for the gentleman on the other end of the line (he
was in India) he was very coherent and helpful. Or perhaps, helpful is not the right
word since I found the solution that Msoft suggests rather, ummm, absurd. This should
not reflect on him at all, he was great, it is just the, ummm, solution that is whacky.
</p>
        <p>
After some testing with me he did verify that I was right and that the issue was with
the Domain Admins membership enumeration. He then did some research and located this
article: <a href="http://technet.microsoft.com/en-us/library/cc772207(WS.10).aspx">http://technet.microsoft.com/en-us/library/cc772207(WS.10).aspx</a>. 
</p>
        <p>
This lays out what is triggering the issue, how w08 (and Vista) handle Admin Approval
Mode (AAM). Again, you can read my earlier post for more background if you want. Basically,
Domain Admins, unlike ALL OTHER USERS, are given two tokens. They have the full access
token (like everyone else) and a second access token referred to as the filtered access
token. This filtered access token has the administrative powers removed. Explorer.exe
(ie the root of all) is started with the filtered access token, and thus everything
is started with it.
</p>
        <p>
Think of it is as RUNAS in reverse. Rather than being a Domain Admin you are reduced
to peon status. It is, in effect, kryptonite.
</p>
        <p>
The solution that MSoft gave was very simple – do not use the Domain Admins account.
At least for file and folder permissions. Create a TOTALLY NEW group and assign the
people that you would normally have as Domain Admins in there. Then give THAT group
the permissions that you want.
</p>
        <p>
You know, that answer still makes me chuckle. What a stupid, stupid solution. Here's
why
</p>
        <ol>
          <li>
It does not actually do the AAM thing. It does not ask me for consent, credentials,
whatever I have it set to. It just says NO when I try to access a folder. No discussion.
So UAC is not actually doing its job here. 
</li>
          <li>
I can access the share of the drive or the folder if I do it via shared drives. It
is only an issue if I am logged on directly to the box. I really get using UAC to
prevent malicious software install, but to stop me from opening a folder??? So now
I need to be the Domain Admins to log on to the server, but something completely different
to access a folder. 
</li>
          <li>
It has no affect on the Built-In Administrator Account. 
</li>
        </ol>
        <p>
I already have a group that I want to use for file and folder permissions or sensitive
areas. The Domain Admins. And with good reason, because they are the DOMAIN ADMINS!!!!!!!!
Now I have to track two groups. All because the UAC will not play well with others.
</p>
        <p>
Here is my solution –&gt; Hey UAC! Buh-bye!!!!!<br /></p>
        <img src="http://www.myfriedmind.com/techBlog/content/binary/buh-bye.gif" border="0" />
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=a3987d9c-93f1-4926-8e93-7b6f148611ab" />
      </div>
    </content>
  </entry>
  <entry>
    <title>UAC and Domain Admins permissions issue on Windows 2008</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/10/14/UACAndDomainAdminsPermissionsIssueOnWindows2008.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,03d242c8-2226-432e-8547-cd2cb9d54ebe.aspx</id>
    <published>2009-10-14T12:18:16.501-05:00</published>
    <updated>2009-10-20T12:15:02.8617512-05:00</updated>
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Note - this is tested on a Windows 2003 R2 domain.
</p>
        <p>
Further note - I have corrected it a bit - specifically the problem applies ONLY to
Domain Admins - see <a href="http://www.myfriedmind.com/techBlog/2009/10/20/UACAndDomainAdminsPermissionsIssueOrPocketFullOfKryptonite.aspx">http://www.myfriedmind.com/techBlog/2009/10/20/UACAndDomainAdminsPermissionsIssueOrPocketFullOfKryptonite.aspx</a> for
more info.
</p>
        <p>
A while ago I noticed something odd on my Windows 2008 clustered file server. When
I tried to open the clustered drive that I was using to hold my shares  from
the box while logged in as a non-default admin (hereafter referred to as NDA) I got
a message stating “Access is denied”. 
</p>
        <img src="http://www.myfriedmind.com/techBlog/content/binary/UACDenialOnCluster.JPG" border="0" />
        <p>
This only happened if I was logged into the box itself in the server room or via Remote
Desktop. I could access the hidden share for that drive remotely with no problem.
Also, if I logged on with the built-it administrator account (hereafter referred to
as BIAA) I had no problem. Finally, if I disabled the User Access Control (UAC) I
could access the drive with the NDA.
</p>
        <p>
Originally I thought that this might be caused by it being clustered, but Symon Perriman
from MSoft assured me that he had not heard of this. Then I thought it might be because
storage we were using and the driver – EMC PowerPath. But I put off any further testing
until I had time to work on a non-production box and to wait for W08R2 to see if that
would make a difference.
</p>
        <p>
First the good news – it does not have to do with clustering. Now the bad news – it
might be a serious issue. 
</p>
        <p>
The basic issue is that the UAC, on both W08 and W08R2 appears to have issues enumerating
membership for certain groups. What is especially unfortunate is that Domain Admins
is one of those groups that it has trouble enumerating.
</p>
        <h2>My Discovery of the Issue
</h2>
        <p>
When I created the new box to test I was initially unable to replicate the problem.
It was not until I looked closer at the clustered drive on the original box that I
realized that the problem had to do with permissions. Since the clustered drive would
contain folders that would limit who would have access I had removed the “Users” group,
leaving “CREATOR OWNER”, “SYSTEM”, “Administrators” (for that box) untouched. I then
added “Domain Admins” with Full Control since this would be clustered and I did not
want to rely on the “Administrators” of one of the nodes for perms. My plan was to
create the shares, inherit from above, and add the appropriate security groups.
</p>
        <p>
Unfortunately, with the UAC turned on I could no longer access the drive even though
the account that I was using was a member of Domain Admins, albeit not the BIAA. I
got a very strongly worded “NO”.
</p>
        <img src="http://www.myfriedmind.com/techBlog/content/binary/UACDenialOnCluster.JPG" border="0" />
        <p>
I replicated the permissions on my test box and discovered the same issue. I then
added Everyone to the root of the drive with “Read” permissions and suddenly the NDA
could access the drive.
</p>
        <p>
By POE (process of elimination &lt;g&gt;) I determined that of the four permissions
included in “Read” – “Traverse Folder / execute file”, “List folder / read data”,
“Read attributes”, and “Read extended attributes” – I only needed the middle two –
“List folder / read data” and “Read attributes”.
</p>
        <p>
Hmm, I wondered if the issue could be that some special account was being used by
the UAC to check for the drive. So I removed the “Everyone” group and added the NDA
with those two specific perms. I could access the drive. So it appeared not to be
an issue with a unique account, but more likely that the Domain Admins membership
could not be enumerated. Maybe.
</p>
        <p>
So I added an old Global Security group that the NDA belonged to (after removing the
NDA) with the necessary perms. That worked. So I removed that, added an old Local
Security group that the old Global security group belonged to. That worked.
</p>
        <p>
I am stretching for possible causes. I can conceive of no reason why the Domain Admins
membership could not be enumerated when other older groups have no issue, even when
the NDA is a member of a member of a group. The only thing that strikes me is that
all the old accounts I have used do not have spaces. Stretching, I know, but there
has to be SOME reason.
</p>
        <p>
I create two new Global Security groups – “PermTest” and “Perm Test”, one with a space
one without. I add the NDA to each and try each of the, granting them the necessary
perms. Neither one worked. So that blows that theory. Just to put a nail in the coffin
I add “Domain Users” and that works. Further testing with Msoft and I catch that I
have to Log OFF and BACK ON for this. Ooops. Those new accounts work, but Domain Admins
still will not.
</p>
        <p>
So far (when the UAC is turned on and accessing with the NDA):
</p>
        <p>
Works
</p>
        <ul>
          <li>
Directly adding NDA 
</li>
          <li>
Adding Everyone 
</li>
          <li>
Adding Domain Users 
</li>
          <li>
Adding Old Global Security groups containing NDA 
</li>
          <li>
Adding Old Local Security groups containing old Global Security groups containing
NDA 
</li>
          <li>
Adding anny counter OTHER than Domain Admins</li>
        </ul>
        <p>
Does not work
</p>
        <ul>
          <li>
Domain Admins 
</li>
          <li>
?</li>
        </ul>
        <p>
I open up ADSIEdit to look at the properties of “Domain Admins” vs “Domain Users”,
I specifically want to see when it says the whenCreated and the whenChanged attributes
are. It turns out that although they both share the same whenCreated date, the “Domain
Admins” whenChanged is more recent. Except that the old Global Security group containing
the NDA has been changed more recently and that one works.
</p>
        <p>
So that is a dead end.
</p>
        <p>
And why does the default administrator account have no problem even with UAC turned
on?
</p>
        <h2>Verification by another forest
</h2>
        <p>
I want a totally isolated confirmation so I contact a buddy of mine down in Ohio (thanks
Stuart) who is also running a w03 network with a w08 member server on it. He runs
into the exact same problem. So the issue does not appear to be bad media or erroneous
implementation, unless we both made the exact same mistakes.
</p>
        <h2>Moving to subfolders
</h2>
        <p>
I move my study to subfolders. I create a subfolder on a local drive, remove Users,
add Domain Admins and test that. I get this message “You don’t currently have permission
to access this folder”. If I choose “Continue” it adds the NDA account with Full Control
and lets me in.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/uacW08NoPerms.gif" border="0" />
        </p>
        <h2>A closer look at the UAC
</h2>
        <p>
It is past time now that we delve into the UAC which seems to be giving us such problems.
</p>
        <p>
In the original w08 it was located in the Control Panel under “User Accounts” and
you had two options there – on or off. In w08r2 it is still located in the Control
Panel but it has now been moved to “System and Security” and now you have four options
(see image). 
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/uacW08UacSettings.gif" border="0" />
        </p>
        <p>
Quick testing on w08r2 soon reveals that the only time that the NDA can access the
drive via “Domain Admins” perms is when the UAC is all the way at the bottom (ie turned
completely off).
</p>
        <p>
What you may not know is that behind the scenes these apparently limited choices actually
control ten different settings in the Local Security Policy. You can access your Local
Security Policy by going to your “Administrative Tools”. Look under Local Policies,
Security Options and at the bottom you will find the entries I am talking about.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/uacW08R2DefaultAdminIssues.gif" border="0" />
        </p>
        <p>
First, let me draw your attention to the very top one – “Admin Approval Mode for the
Built-in Administrative account”. This is the source of that odd exception – that
the built-in administrative account can access the drive regardless of the UAC settings.
This is set to Disabled and is ALWAYS set to Disabled regardless of the changes you
make in the Control Panel. The only way to change it to Enabled is to change it here.
</p>
        <p>
What will happen if it gets changed from Disabled to Enabled? Basically the built-in
administrative account (BIAA) will be treated like any other administrative account
(such as the NDA). See the “Explain tab”.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/uacW08AdminApprovalExplain.gif" border="0" />
        </p>
        <p>
So, if your devious mind is like mine you instantly wonder if changing it to Enabled
means that since the NDA cannot access the drive and since the BIAA is being treated
like the NDA now, does that mean that the BIAA cannot access the drive? The answer
is that, sure enough, the BIAA account CANNOT access the drive when it is treated
like any other admin account and UAC is on. Yeah! I have succeeded in making things
worse!
</p>
        <p>
What does it mean that the BIAA is treated like any other administrator? How does
the UAC determine how they are treated? For that I draw your attention to the third
UAC entry in the Local Security Policy – named “Behavior of the elevation prompt for
administrators in Admin Approval Mode”. This is one of the areas where w08 and w08r2
differ in their implementation of UAC. W08r2 does not add any more entries into the
Local Security Policy, instead it adds three more options to this entry and adds one
more to the subsequent (“Behavior of the elevation prompt for standard users”). See
the image below.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/uacW08andW08r2AdminSettings.gif" border="0" />
        </p>
        <p>
So there are multiple ways that administrators can interact with the UAC when it is
turned on. But what if the UAC is turned off? That affects the eighth choice –“Run
all administrators in Admin Approval Mode”. Per the Explain below, disabling this
disables Admin Approval mode, and hence (I believe) the entire UAC.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/uacW08UACOffExplain.gif" border="0" />
        </p>
        <h2>W08 and W08r2 Admin Approval Mode settings results
</h2>
        <p>
Regardless of what level I set the Admin Approval Mode to (three in w08, six in w08r2),
including “Elevate without prompting”, I was unable to open a subfolder or a root
drive that had the perms I have been talking about using the NDA account when UAC
is on. The prompts where the same – denial on root drives, prompting to grant perms
to the NDA on subfolders.
</p>
        <p>
Only when the UAC is off w08 has no problem enumerating the NDA’s membership in Domain
Admins.
</p>
        <h2>What does this all mean?
</h2>
        <p>
It seems to me the simplest solutions are:
</p>
        <ol>
          <li>
turn off the UAC 
</li>
          <li>
do not use an NDA to access the server (the above is an issue with file/folder perms,
but it might affect other aspects as well) 
</li>
          <li>
do not rely on either Domain Admins for permissions. On second thought, do not rely
on Domain Admins for ANYTHING.</li>
        </ol>
        <p>
Until this gets addressed by Msoft you are probably safest (ironically) in turning
the UAC completely off on your w08 boxes. Not ideal, especially since the addition
of “Prompt for consent for non-Windows binaries” helps remove some of the Clippy aspects
of the UAC (<a href="http://www.myfriedmind.com/techBlog/2009/09/29/UACOrTheReturnOfClippy.aspx">see
my thoughts on that here</a>). Unfortunately the UAC has its tentacles in pretty much
everything and who knows when this issue might trigger something more serious?
</p>
        <p>
On a side note, some of you may be wondering why the UAC has that particular exception
for the BIAA, especially as it is never turned off unless you do it via the Local
Security policy. I cannot read the mind of the makers, but I suspect that it has to
do with protection against elevated privileges. If you can restrict all NDAs (but
not the BIAA) then if someone does hack your system on a regular user account and
elevates themselves to an NDA they could STILL be restricted. It seems to me a logical
way to guard against that.
</p>
        <p>
Let me know what you think….
</p>
        <p>
m
</p>
        <p>
followup - <a href="http://www.myfriedmind.com/techBlog/2009/10/20/UACAndDomainAdminsPermissionsIssueOrPocketFullOfKryptonite.aspx">http://www.myfriedmind.com/techBlog/2009/10/20/UACAndDomainAdminsPermissionsIssueOrPocketFullOfKryptonite.aspx</a></p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=03d242c8-2226-432e-8547-cd2cb9d54ebe" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Internet Explorer 8 required for Windows 2008 SP2 Install</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/10/09/InternetExplorer8RequiredForWindows2008SP2Install.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,de8d8c91-ee9b-4bc8-b23b-2d622661d103.aspx</id>
    <published>2009-10-09T15:23:43.5174512-05:00</published>
    <updated>2009-10-09T15:23:43.5174512-05:00</updated>
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I checked the prerequisites for installing sp2 on w08 at this entry -&gt; <a href="http://technet.microsoft.com/en-us/library/dd335038(WS.10).aspx">http://technet.microsoft.com/en-us/library/dd335038(WS.10).aspx</a> and
there is no mention that Internet Explorer 8 needs to be installed in order for w08
sp2 to be installed. And perhaps this is a quirk with Windows Updates, but on identitical
w08 boxes (not r2) I am offered SP2 on one and not on the other.
</p>
        <p>
What I AM offered on the other is the installation of IE8 for x64. It has already
been installed on the first box. Note that it is simply called 'important' not 'critical'.
</p>
        <p>
So I install IE 8 on the 2nd box and voila! Now I can install sp2. 
</p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=de8d8c91-ee9b-4bc8-b23b-2d622661d103" />
      </div>
    </content>
  </entry>
  <entry>
    <title>W08 Cluster Validator Error: Found duplicate IP address</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/10/06/W08ClusterValidatorErrorFoundDuplicateIPAddress.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,647c5ea5-463f-4846-ab3d-5a5ca1b9440c.aspx</id>
    <published>2009-10-06T14:44:44.9091112-05:00</published>
    <updated>2009-10-06T14:44:44.9091112-05:00</updated>
    <category term="Clustering" label="Clustering" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Clustering.aspx" />
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you have tried installing the Windows 2008 Failover clustering one of the nice <img src="http://www.myfriedmind.com/techBlog/content/binary/toredoDupNodeInfo.JPG" align="right" border="0" />things
that MSoft provides out of the box is a Cluster Validator. Not merely does it allow
a more robust set of options for hardware, but it runs through a basic checklist of
necessary and suggested configurations so you do not have to.
</p>
        <p>
However, you may run into the following error under "Validate IP Configuration" -&gt;
Found duplicate IP address blahblahblah on node blahblah adapter Local Area Connection
*blah and node blahblah2 adapter Local Area Connection *blah.
</p>
        <p>
The reason for this is what is called the Teredo Tunneling Pseudo-Interface (TTPI).
Which, as you can intuitively tell from its name is used to tunnel IPv6 traffic over
an IPv4 interface. It turns out that the TTPI gives IDENTICAL IPv6 addresses to all
the servers. Since the IP address is going through a unique IPv4 already this is not
a problem (and prevents it from bumping against a different IPv6). When you apply
it to clustering, however, this is flagged as an issue.
</p>
        <p>
The basic solution is to disable the TTPI. The method I use is very simple:
</p>
        <p>
1. Open up Server Manager to get to your Device Manager and under View select "Show
hidden devices". (It is hidden, in case that was not obvious).
</p>
        <br />
        <img src="http://www.myfriedmind.com/techBlog/content/binary/toredoHiddenDevices[1].JPG" border="0" />
        <p>
2. The TTPI should magically appear. 
</p>
        <img src="http://www.myfriedmind.com/techBlog/content/binary/toredoDisplayed.JPG" border="0" />
        <br />
        <p>
3. Now right-click and select disabled. I suggest you do this on all nodes
</p>
        <img src="http://www.myfriedmind.com/techBlog/content/binary/toredoDisableCircled.JPG" border="0" />
        <br />
        <br />
        <p>
And you are good to go.
</p>
        <p>
If this STILL does not work, take a look at Symon Perriman's entry here -&gt; <a href="http://blogs.msdn.com/clustering/archive/2008/07/26/8773796.aspx">http://blogs.msdn.com/clustering/archive/2008/07/26/8773796.aspx</a></p>
        <p>
Have fun clustering!!!<br /></p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=647c5ea5-463f-4846-ab3d-5a5ca1b9440c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Add-ons and broken browsers</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/10/02/AddonsAndBrokenBrowsers.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,bf905479-7027-45a9-860e-28b90861ab57.aspx</id>
    <published>2009-10-02T13:21:09.08-05:00</published>
    <updated>2009-10-02T13:21:35.5800262-05:00</updated>
    <category term="Internet Explorer" label="Internet Explorer" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,InternetExplorer.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I encountered a user who was browsing to a webpage that locked up their computer.
I kid you not, we had to do a hard reboot, no ctrl-alt-del anything. She was using
IE 7 and there were no fancy-schmancy toolbars on there, but I took a looksee at her
add-ons as I have found these to not merely be an issue on occasion but even to be
where malware has secreted itself.
</p>
        <p>
I noticed an add-on named "jqsiestartdetectorimpl" which referenced jqs_plugin.dll.
That is the Sun Java quickstarter file. 
</p>
        <p>
Now one of the problems in the whole realm of computers is that with so much competition,
vendors do not care if they break your computer as long as they are on top. Who cares
if your computer is slower as long as our product launches a microsecond faster. So
you end up with a thousand (okay, I exaggerate) little programs sucking up memory
because they each are thinking about numero uno. And no, numero uno is NOT you.
</p>
        <p>
So I disabled that add-on and voila! 
</p>
        <p>
Note that many of these do NOT need to run for your stuff to work beautifully. And
in this case (and others I have run across) all they do is mess up the browser, and
possibly freeze the computer.<img src="http://www.myfriedmind.com/techBlog/content/binary/ieNoAddOns.gif" align="right" border="0" /></p>
        <p>
One nice thing about IE 7 and 8 is that they have a "no add-ons" mode. You can
get to it a few ways
</p>
        <ol>
          <li>
Start/Run and type "iexplore.exe -extoff" (sans quotes). Note that you will need to
reenable any add-ons that you want since this turns them all off. 
</li>
          <li>
From the Start menu, to into Accessories / System Tools / Internet Explorer (No Add-ons).
This will only disable add-ons for the duration of this session.</li>
        </ol>
        <p>
Note that #2 is better for troubleshooting since it does not turn them off permanently.
</p>
        <p>
Remember - malware likes to hide here, so keep an eye on these.
</p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=bf905479-7027-45a9-860e-28b90861ab57" />
      </div>
    </content>
  </entry>
  <entry>
    <title>UAC or the return of Clippy</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/09/29/UACOrTheReturnOfClippy.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,2a3df7cb-c14c-4be2-829c-81ddb4b0c9fa.aspx</id>
    <published>2009-09-29T11:03:14.674-05:00</published>
    <updated>2009-10-02T11:12:42.6278912-05:00</updated>
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <category term="Windows 7" label="Windows 7" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows7.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was pondering the <img src="http://www.myfriedmind.com/techBlog/content/binary/clippysucker.jpg" align="right" border="0" />UAC
(User Access Control) on Windows Server 2008 and Windows 7 (nobody talks about Vista
anymore) and it occurred to me that the experience of interacting with it reminded
me of another time. An annoying, apparently helpful attempt by Msoft that actually
prevents you from doing work (see <a href="http://www.myfriedmind.com/techBlog/2009/07/14/Windows2008AdministratorRemoteAccessVsWindows2003AdministratorRemoteAccess.aspx">here</a>).
Suddenly it struck me - the return of 'Clippy'!!!
</p>
        <p>
Now, first off, I can understand MSoft's implementing the UAC. After all, everyone
knows that MSoft is so full of holes that it should if it were a cheese it would be
swiss cheese. Everyone knows that, even if it is not necessarily true. So to convince
everyone that they were secure they had to prevent users (that would be us) from doing
stupid things. Like installing programs that should not be installed or changing setting
that would render their computer unbootable. Because, of course, if a user does those
things than the people REALLY at fault are not the users (heaven forfend) but MSoft!
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/eggwarninglabel.jpg" align="left" border="0" />To
quote on of my favorite sayings - "calling something foolproof fails to take into
account the ingenuity of fools."
</p>
        <p>
They have to do this because we are so stupid as a race that an entire industry has
sprung up to inform us of the obvious. Such as "do not put a gasoline can in a fire"
or "ax blades are sharp" or (as in this picture) "this egg product contains eggs".
</p>
        <p>
Still, there has to be <img src="http://www.myfriedmind.com/techBlog/content/binary/clippy1.jpg" align="right" border="0" />some
sort of happy medium. W08 only offers two options - on or off. W08R2 offers more (and
I will make some notes on that in another blog) but I fear that in general MSoft has
gone too far in the wrong direction. They are so concerned with protecting us that
they are annoying us. And if something becomes annoying we generally stop doing it.
</p>
        <p>
Goodbye Clippy. Goodbye UAC.
</p>
        <p>
Do I have a solution? Of course not. Except to suggest that the UAC could be tweaked
to be more specific. What I mean by that is simply that rather than trying to prevent
you from doing EVERYTHING, it should only prevent the main crucial things. Perhaps
it should not question you when you are installing programs but only when you are
not installing them from an executable from a DVD or from your local drive.
</p>
        <p>
Or perhaps the solution is that high-end users simply turn 'Clippy' off. He is annoying
and YES I DO KNOW WHAT I AM DOING AND I WANT TO DO THAT! 
</p>
        <p>
At least, most of the time...
</p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=2a3df7cb-c14c-4be2-829c-81ddb4b0c9fa" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Opera 9.x, 10.x failing on Ajax history and the hack to fix it</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/09/21/Opera9x10xFailingOnAjaxHistoryAndTheHackToFixIt.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,fd211b39-bd6c-4a44-9e93-5a67ca4d0b74.aspx</id>
    <published>2009-09-21T10:40:37.627-05:00</published>
    <updated>2009-09-21T12:12:34.6277112-05:00</updated>
    <category term="Ajax" label="Ajax" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Ajax.aspx" />
    <category term="Asp.Net" label="Asp.Net" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,AspNet.aspx" />
    <category term="Coding Tricks" label="Coding Tricks" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,CodingTricks.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Part 1 - <a href="http://www.myfriedmind.com/techBlog/2009/06/30/AjaxHistoryAHowToPart1.aspx"><font color="#5c80b1">Introduction</font></a><br />
Part 2 - <a href="http://www.myfriedmind.com/techBlog/2009/07/01/AjaxHistoryAHowToPart2ABasicExample.aspx"><font color="#5c80b1">Basic
Example</font></a><br />
Part 3 - <a href="http://www.myfriedmind.com/techBlog/2009/07/09/AjaxHistoryAHowToPart3ComplexExampleC.aspx"><font color="#5c80b1">Complex
Example</font></a><br />
Part 4 - <a href="http://www.myfriedmind.com/techBlog/2009/07/09/AjaxHistoryAHowToPart4FinalNotes.aspx"><font color="#5c80b1">Final
Notes</font></a><br />
Bonus - <a href="http://www.myfriedmind.com/techBlog/2009/05/20/AjaxHistoryAndTheMementoPattern.aspx"><font color="#5c80b1">Ajax
History and the Memento Pattern</font></a><br />
Extra Bonus - <a href="http://www.myfriedmind.com/techBlog/2009/09/21/Opera9x10xFailingOnAjaxHistoryAndTheHackToFixIt.aspx">Issues
with Opera</a></p>
        <p>
I dedicate this blog to Tomi, who brought this issue to my attention. Without I would
be blissfully unaware that my ajax examples did not work with Opera.
</p>
        <p>
To make a long story short, the basic Ajax history points that are demonstrated starting
in <a href="http://www.myfriedmind.com/techBlog/2009/06/30/AjaxHistoryAHowToPart1.aspx">this
blog entry</a> and on <a href="http://www.myfriedmind.com/AjaxExamples/AjaxSimpleHistory.aspx">the
site</a> here fail miserably when used by Opera, even the most recent v 10. It would
go forward once and then fail on either the next history point or going backwards.
It worked fine if history was not stored.
</p>
        <p>
At first I thought that it might have to do with Validation, so I turned off
Event Validation and ValidateRequests but no dice. I tried modifying the LoadScriptBeforeUI
setting on the ScriptManager thinking that maybe Opera was attempting to access the
controls before they were instantiated. No dice.
</p>
        <p>
Looking at the "Error Console" in Opera gave this confusing information:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
JavaScript - <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimplehistory.aspx">http://www.myfriedmind.com/ajaxexamples/AjaxSimplehistory.aspx</a><br />
Unknown thread<br />
Error:<br />
name: Sys.WebForms.PageRequestManagerServerErrorException<br />
message: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred
while processing the request on the server. The status code returned from the server
was: 400<br />
stacktrace:   Line 5 of linked script <a href="http://www.myfriedmind.com/ScriptResource.axd?d=Ca9Q30sQJzQkznL95cxsbDyIKgsvVPJZcb1rw8ROyNsMckgQG68w3ACHnEiANPBR_VaW0NUFhahnNTwkTQZ39NfZ8sEeH0NKN9NzfqKtjhs1&amp;t=40a63f28">http://www.myfriedmind.com/ScriptResource.axd?d=Ca9Q30sQJzQkznL95cxsbDyIKgsvVPJZcb1rw8ROyNsMckgQG68w3ACHnEiANP<br />
BR_VaW0NUFhahnNTwkTQZ39NfZ8sEeH0NKN9NzfqKtjhs1&amp;t=40a63f28</a><br />
    function(a,d,f){if(this._request===d.get_webRequest()){this._processingRequest=false;this._additionalInput=null;this._request=null}var
e=this._get_eventHandlerList().getHandler("endRequest"),b=false;if(e){var c=new Sys.WebForms.EndRequestEventArgs(a,f?f.dataItems:{},d);e(this,c);b=c.get_errorHandled()}if(a&amp;&amp;!b)throw
a}<br />
.....<br /></p>
        </blockquote>
        <p>
The key is that it was not returning the 200 that we all know and love, but a 400
status. Per <a href="http://support.microsoft.com/kb/247249">this Msoft article (kb
247249)</a> - 
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
If the contents of a GET request are corrupt, then the server is unable to determine
the URL or the host to which the GET request should be sent. IIS is unable to retrieve
the host information from the GET request packet in order to look up the meta data
for the custom error. This is by design. Errors that result from severely corrupted
GET requests are not customizable.
</p>
        </blockquote>
        <p>
Now I KNOW that they are not corrupt. It works perfectly fine with IE and Firefox.
When I run it on Fiddler (<a href="http://www.fiddler2.com/">http://www.fiddler2.com/</a>)
- my go-to tool for troubleshooting odd Ajax problems I do see the 400 returned. Note
in the picture that the first three are for IE which work (all 200s) the second set
of three is for opera - the final one being the 400 error. 
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/fiddlerOperAjaxError1.JPG" border="0" />
        </p>
        <p>
When I look at the raw data of that entry it tells me that the response is that it
is getting a Bad Request &lt;Invalid URL&gt; (see below). hmmmmm, should I trust it?
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/fiddlerOperAjaxError2.JPG" border="0" />
        </p>
        <p>
Hunting and pecking I find various entries dealing with Opera and its issues with
Ajax, most of them from years ago. And then I discover this gem: <a href="http://www.webmasterworld.com/javascript/3195000.htm">http://www.webmasterworld.com/javascript/3195000.htm</a> which
has this notation near the end (italics mine)
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
opera has a rather annoying bug. This occurred in both 8 and 9: If the URL is exactly
the same, the PHP file results are cached, and all the requests terminate as soon
as the first result is returned. IE does the same, but I was able to fix it by spitting
out a couple of "no-cache" headers. opera ignores these headers.
</p>
          <p>
            <em>
              <strong>I fixed that by adding an "id=" parameter to the URL, which made each
URL unique. This forced opera to stop caching. </strong>
            </em>
          </p>
        </blockquote>
        <p>
Wha??? So I added a querystring to the end of my url (it does not matter what it is)
and it worked! In other words <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimplehistory.aspx?x=y">http://www.myfriedmind.com/ajaxexamples/AjaxSimplehistory.aspx?x=y</a> will
work in Opera but <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimplehistory.aspx">http://www.myfriedmind.com/ajaxexamples/AjaxSimplehistory.aspx</a> will
not. 
</p>
        <p>
Now here is the odd part, and to display it I am going to direct you to a slight different
simple ajax example I just whipped up -&gt; <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx</a>.
I am also going to give you a behind the scenes look (via fiddler) as to what, exactly,
Opera is 'requesting'. The main modification I did was to change the length of the
text used for the history point (I am only going to store hour, minutes, seconds to
expedite this) to make it shorter and easier to view. 
</p>
        <p>
Again <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx</a> works
for the first one and fails for the second.
</p>
        <p>
First, let us look at what happens in IE per Fiddler (note that I only include the
querystring here for comparison, this example works in IE without it).
</p>
        <ul>
          <li>
clicking on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y</a> <br />
Post /ajaxexamples/AjaxSimpleOpera.aspx 
<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=042004">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=042004</a></li>
          <li>
clicking on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042004">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042004</a> <br />
Post /ajaxexamples/AjaxSimpleOpera.aspx 
<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042006">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042006</a></li>
          <li>
clicking on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042006">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042006</a>  <br />
Post /ajaxexamples/AjaxSimpleOpera.aspx 
<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042007">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042007</a></li>
          <li>
clicking on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042007">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042007</a><br />
Post /ajaxexamples/AjaxSimpleOpera.aspx 
<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042008">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx#&amp;&amp;myTime=042008</a></li>
        </ul>
        <p>
Now the Opera per Fiddler - 
</p>
        <ul>
          <li>
Now adding a querystring on to the end - ex: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y</a> works.
But notice what is happening behind the scenes with each click 
</li>
          <li>
click on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y</a><br />
POST /ajaxexamples/AjaxSimpleOpera.aspx?x=y<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041426">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041426</a><a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041052"></a></li>
          <li>
click on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041426">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041426</a><br />
POST /ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041426<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443</a><a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041118"></a></li>
          <li>
click on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443</a><br />
POST /ajaxexamples/AjaxSimpleOpera.aspx?x=y%23&amp;&amp;myTime=041426#&amp;&amp;myTime=041443<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443</a></li>
          <li>
click on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041443</a><br />
POST /ajaxexamples/AjaxSimpleOpera.aspx?x=y%23&amp;&amp;&amp;myTime=041426%23&amp;myTime=041443#&amp;&amp;myTime=041535<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=0414535">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=0414535</a></li>
          <li>
click on <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=0414535">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=0414535</a><br />
POST /ajaxexamples/AjaxSimpleOpera.aspx?x=y%23&amp;&amp;&amp;&amp;myTime=041426%23&amp;myTime=041443%23&amp;myTime=041535#&amp;&amp;myTime=041537<br />
new url: <a href="http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041542">http://www.myfriedmind.com/ajaxexamples/AjaxSimpleOpera.aspx?x=y#&amp;&amp;myTime=041542</a></li>
        </ul>
        <p>
Okay, okay, there was a long time between clicks (I was pasting it over), but do you
notice anything different between the two (pay attention to the POST that is done
via Ajax)? Internet Explorer ALWAYS Posts to the same URL - it ignores the hash entry.
Opera prepends the previous hash entry after encoding it for the url, and so it gets
longer and longer. 
</p>
        <p>
What is really, really odd is that Opera keeps prepending EVEN WHEN YOU HIT THE BACK
BUTTON! So moving back and forth in your ajax history means that you are getting a
longer and longer request entry. If you want to see this, snag fiddler -&gt; <a href="http://www.fiddler2.com">http://www.fiddler2.com</a> and
try it. Your POST request gets longer and longer due to the prepending, but the URL
does not reflect this at all. This ALL happens under the covers.
</p>
        <p>
I finally went into Opera and tried turning off ALL caching (disk and otherwise).
No luck! And when I set it to pretend to be IE it threw an error on the history point
setting, claiming it was not asynchronous. I even went into opera:config under User
Prefs and set the "History Navigation Mode" to 1 per this article <a href="http://www.opera.com/support/kb/view/827/">http://www.opera.com/support/kb/view/827/</a> to
prevent what it calls "fast history navigation". Still no dice! I even set the Opera
to "Always Reload Https In History" and then connected via https to the page and that
failed as well.
</p>
        <p>
So why does adding a query string work? I honestly don't know. But this might be a
clue - when it succeeded the hash was passed as a query string variable in Opera.
When it failed, no query string was passed at all. There are a number of posts all
over the web that refer to Opera caching when it should not, so I suspect that
that may indeed be the issue - Opera is caching the page regardless of what it
is told. Only by including the query string can you force Opera to not do whatever
it is doing.
</p>
        <p dir="ltr">
So there appear to be three solutions
</p>
        <ol>
          <li>
Don't use Ajax history for Opera unless you use a query string (it might work in systems
other than .net, I have not tested this) 
</li>
          <li>
Get Opera to fix the issue (good luck!) 
</li>
          <li>
Make sure you have a querystring, even a nonsense one, if your users will be using
Opera...</li>
        </ol>
        <p>
Happy coding!
</p>
        <p>
----------
</p>
        <p>
Further notes:
</p>
        <p>
This article -&gt; <a href="http://cfis.savagexi.com/2007/06/12/opera-ajax-and-bugs">http://cfis.savagexi.com/2007/06/12/opera-ajax-and-bugs</a> talks
about an issue with Opera rejecting status codes other than 200. However that is probably
not the issue since it should be returning a 200 code anyway. Just something to keep
in mind.
</p>
        <p>
Now I should note assuming that it was a caching issue I added a bunch of code to
prevent caching - including the ones below:
</p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
Response.ClearHeaders();<br />
Response.AppendHeader("Cache-Control", "no-cache"); 
<br />
Response.AppendHeader("Cache-Control", "private"); 
<br />
Response.AppendHeader("Cache-Control", "no-store"); 
<br />
Response.AppendHeader("Cache-Control", "must-revalidate"); 
<br />
Response.AppendHeader("Cache-Control", "max-stale=0");  
<br />
Response.AppendHeader("Cache-Control", "post-check=0");  
<br />
Response.AppendHeader("Cache-Control", "pre-check=0");  
<br />
Response.AppendHeader("Pragma", "no-cache");  
<br />
Response.AppendHeader("Keep-Alive", "timeout=3, max=993");  
<br />
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); 
<br />
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));<br />
Response.Cache.SetCacheability(HttpCacheability.NoCache);<br />
Response.Cache.SetNoStore();
</p>
        </blockquote>
        <p dir="ltr">
But again, the only thing that appears to resolve the issue is the inclusion of a
query string.
</p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=fd211b39-bd6c-4a44-9e93-5a67ca4d0b74" />
      </div>
    </content>
  </entry>
  <entry>
    <title>HP Universal Print Driver PCL 6, Windows 2008, and Watermarks</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/08/26/HPUniversalPrintDriverPCL6Windows2008AndWatermarks.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,d126364d-b499-48ea-a590-ae5b95c92e06.aspx</id>
    <published>2009-08-26T13:16:53.4388142-05:00</published>
    <updated>2009-08-26T13:16:53.4388142-05:00</updated>
    <category term="Printing" label="Printing" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Printing.aspx" />
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For those of you just enter the IT 'biz, let me assure you that Hewlett Packard was
once a great company. Good, reliable printers. Functional Drivers. Not the crap we
are handed today. It is alwasy sad to see a reliable company start to tube and I can
only hope that this is a quirk, but I once again ran into an issue with their drivers.
</p>
        <p>
We are using their Universal Print Driver because they have not come out with the
neccessary drivers for Windows 2008 for our printers (not to mention <a href="http://www.myfriedmind.com/techBlog/2009/08/05/Windows2008PrintServicesHPLaserJetPrintersAndSLOWPrinting.aspx">the
issue with their bidirectional channel component</a>) and came across a rather strange
bug. Let us say that we are trying to print the following document from
Word 2007 that has a watermark. It should look like this:
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/howitshouldlook[1].gif" border="0" />
        </p>
        <p>
However, when printed from an XP machine we only get half the letters. It looks
like this:
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/pcl6base.gif" border="0" />
        </p>
        <p>
I verify that there are no correct drivers from HP (nope!) and then I try changing
a setting - maybe "Send Truetype as Bitmap". Wow! Now we have the other letters, we
just dropped most of the original ones that were showing.
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/truetypeasbitmap.gif" border="0" />
        </p>
        <p>
So I roll back the driver from PCL6 (v 5.0) to PCL5 (v 5.0). And guess what. It works.
PCL 5 works where PCL 6 does not. 
</p>
        <p>
          <img src="http://www.myfriedmind.com/techBlog/content/binary/pcl5.gif" border="0" />
        </p>
        <p>
A little (true) story. I was about to fly out of town so I took my wife's car into
an oil-change place just to get that task done. While there the tech pointed out that
the alternator belt was missing a tooth. Now I have changed more alternator belts
in my life than you can shake a stick at, and I should know better than to have an
oil-change place change my belts, but since I was in a hurry I figured to let them
do it for me this time. 
</p>
        <p>
Oops.
</p>
        <p>
When I get back I find out that it is squealing when you start the car. Hmm, maybe
they need to tighten it. I take it back and they can't repair it. It works on tensioning
pulleys in that car and they tell me they think that one of the pulleys is broken.
So I take it to the dealer to fix. The rep sits down next me after they have loaded
the car up and taken a look and says, "Well, it is kind of good news. The pulleys
aren't broken, they simply put on the wrong belt - it is too large."
</p>
        <p>
It seems to me that these "Universal" print drivers from HP fall into that category.
What use is a functional engine if the belts that you put on it do not fit.
</p>
        <p>
Come on, HP, spend some time on the belts. Please.
</p>
        <img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=d126364d-b499-48ea-a590-ae5b95c92e06" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Exchange 2007 and Certificate Security Alert when using External name vs Internal name</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/08/17/Exchange2007AndCertificateSecurityAlertWhenUsingExternalNameVsInternalName.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,05e495ec-7e47-43ff-914b-94f3ea0f5ff0.aspx</id>
    <published>2009-08-17T09:28:45.602-05:00</published>
    <updated>2009-08-14T09:28:45.6025811-05:00</updated>
    <category term="Exchange 2007" label="Exchange 2007" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Exchange2007.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">We recently moved to Exchange 2007 and are
using our public certificate (which is different from our internal server name). Because
of this we get the popup that informs us that our certificate name is different from
the site that we are trying to contact.<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/ex07certerror.JPG" border="0" /><br /><br />
This can cause issues if the people click "No" as opposed to "Yes" (more on this blog).
There are a couple of solutions - change the certificate (if the CA will let you)
to have an alternate name; or do the steps listed below.<br /><ol><li>
Open the Exchange Management Shell on the hub server.<br /><br /></li><li>
Take a looksee at your ClientAccessServer (CAS) settings -&gt; at the shell window
type:<br /><br />
Get-ClientAccessServer | fl<br /><br />
You should see the following. What you are looking for is the "AutoDiscoverServiceInternalUri".
As you will note it is different than what is on your certificate. We are going to
change it to match. Note that the "fl" portion gives you a nice flowing perspective.<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/ex07certinfo.gif" border="0" /><br /><br /></li><li>
Backup your current CAS setting because we do work in IT and are therefore rightfully
paranoid. Hey, it never hurts. I always append the date but the naming is up to you.
At the shell window type:<br /><br />
Get-ClientAccessServer <b><i>&lt;your x07 hub server's net bios name here&gt;</i></b> |
fl &gt; <i><b>&lt;filename&gt;</b></i><br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/ex07CasInfoSave.gif" border="0" /><br /><br /></li><li>
Now, take a looksee at the "InternalUrl" of the WebServicesVirtualDirectory settings
-&gt; at the shell window type:<br /><br />
Get-WebServicesVirtualDirectory | fl Identity,InternalUrl<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/ex07CASWVDInfo.gif" border="0" /><br /><br />
Note that in this case, adding the "Identity,InternalUrl" after the "fl" filters what
information will be displayed to only the Identity and the InternalUrl (which are
are going to use). If you do not include anything after the "fl" it will show you
all the information. You can specify what particular pieces you want displayed by
listing them after it, separated by commas. Also note that for this command YOU DO
NOT SPECIFY THE SERVER.<br /><br /></li><li>
Again, let's back this up -&gt;<br /><br />
Get-WebServicesVirtualDirectory | fl &gt; "c:\wsvdInfo081709.txt"<br /><br /></li><li>
Set the internal name by typing at the command shell window:<br /><br />
Set-ClientAccessServer <i><b>&lt;your x07 hub server's net bios name here&gt; </b></i>-AutoDiscoverServiceInternalUri
https://<i><b>&lt;the Issue TO name on the Certificate such as www.mydomain.com&gt;</b></i>/Autodiscover/Autodiscover.xml<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/ex07CasADChange.gif" border="0" /><br /><br /></li><li>
Set the WebServicesVirtualDirectory appropriately<br /><br />
Set-WebServicesVirtualDirectory <i><b>"&lt;your x07 hub server's net bios name here&gt;</b></i>\EWS
(Default Web Site)" -InternalUrl https://<i><b>&lt;the Issue TO name on the Certificate
such as www.mydomain.com&gt;</b></i>/EWS/Exchange.asmx<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/ex07CasWVDChange.gif" border="0" /><br /></li></ol>
And you should be good to go...<img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=05e495ec-7e47-43ff-914b-94f3ea0f5ff0" /></div>
    </content>
  </entry>
  <entry>
    <title>Printer problem (or It is not a Silicone based problem problem but a Carbon based one)</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/08/13/PrinterProblemOrItIsNotASiliconeBasedProblemProblemButACarbonBasedOne.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,11ddf1dc-a046-45b4-b735-4fdd8f6838f0.aspx</id>
    <published>2009-08-13T08:02:28.808-05:00</published>
    <updated>2009-08-14T08:03:22.3546157-05:00</updated>
    <category term="Printing" label="Printing" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Printing.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">I just have to share this story to highlight
the curiosities caused by supporting users. 
<br /><br />
A couple of days ago I received a distress call because someone's printer (let's call
her "Mary") was asking for cardstock. Knowing what the problem was - <a href="http://www.myfriedmind.com/techBlog/2009/08/06/HewlettPackerPrintersAskingForCardstockOrRecycledOrGlossyOnWindows2008PrintServer.aspx">look
here</a> - I went up and removed/readded her printer. That brought down all the settings
from the print server and she was good to go (after she closed out of programs that
were holding the old settings). Printing proceeded perfectly.<br /><br />
Today I got a call about the same person having printing issues. But not from her.
I will refer to the person who called initially as "Jackie".<br /><br />
*ring* 
<br /><br />
Me: "Hello, this is Matt."<br />
Jackie: "Mary is having trouble printing again."<br />
Me: "Is Mary there?"<br />
Jackie: "Yes."<br />
Me: "Then why isn't Mary calling me?"<br />
Jackie: "She asked me to call."<br />
Me: "Have Mary call me."<br /><br />
*ring*<br /><br />
Me: "Hello, this is Matt."<br />
Mary: "I am having trouble printing again."<br /><br />
I then proceed, over the phone, to walk her through checking her printer's settings,
specifically what the 'Paper Type' is. Everything is perfect. Except that it won't
print. I have her try printing from Notepad, no go. I check on the server and there
is definitely a backup. So I jog on up there to take a looksee. When I arrive, Mary
is kicking back reading the paper. I walk over to her computer and verify, again,
that everything is perfect. 
<br /><br />
Strange...<br /><br />
I walk over to the printer. There, emblazoned on the informational screen, is this
message -&gt; "Manually Feed Envelope". I manually feed an envelope. It prints an
envelope and then ALL Mary's stuff starts to spew forth...<br /><br />
Jackie: "Oh, that was that envelope that you asked it to print, Mary."<br /><br />
Ironically I am sure that the word will get around that "we are still having printer
problems." Ah well, you need to have thick skin if you are going to work in IT. And,
of course, I got quite a chuckle at the thought that Jackie had to call for Mary.<br /><br /><p></p><img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=11ddf1dc-a046-45b4-b735-4fdd8f6838f0" /></div>
    </content>
  </entry>
  <entry>
    <title>Hewlett Packer Printers asking for Cardstock (or Recycled, or Glossy) on Windows 2008 Print Server</title>
    <link rel="alternate" type="text/html" href="http://www.myfriedmind.com/techBlog/2009/08/06/HewlettPackerPrintersAskingForCardstockOrRecycledOrGlossyOnWindows2008PrintServer.aspx" />
    <id>http://www.myfriedmind.com/techBlog/PermaLink,guid,07f5f354-1a1a-43f2-902c-35b7bcde495f.aspx</id>
    <published>2009-08-06T09:28:32.127-05:00</published>
    <updated>2009-08-07T09:28:32.1273238-05:00</updated>
    <category term="Printing" label="Printing" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Printing.aspx" />
    <category term="Windows 2008" label="Windows 2008" scheme="http://www.myfriedmind.com/techBlog/CategoryView,category,Windows2008.aspx" />
    <author>
      <name>papabear</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">We moved to our w08 print server and as
noted in <a href="http://www.myfriedmind.com/techBlog/2009/08/05/Windows2008PrintServicesHPLaserJetPrintersAndSLOWPrinting.aspx">yesterday's
post </a>ran into issues with slooooooooooooooooow printing. These were resolved by
moving to the Universal Print Driver (UPD) which had an updated bidirectional channel
portion. There was one surprising result of the move - all of a sudden people were
being prompted to load a type of paper (recycled, heavy-weight, glossy) into the Manual
Feed tray on the 4250s. If they hit the continue button (the checkmark) it would print,
but they had to do it FOR EVERY PAGE.<br /><br />
Not something to make your end users happy.<br /><br />
The issue appears to be a rather odd interaction with the driver in which it sets
modifies the default settings of the printer. To fix:<br /><br />
1 - Open up the printer properties on the Print Server and go to the Advanced Tab.
Selecting "Printer Defaults"<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/hpCardstock1a.JPG" border="0" /><br /><br />
2 - Go to the Paper/Quality tab and look at the Paper type. It is probably set at
a specific (undesired) type.<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/hpCardstock2.JPG" border="0" /><br /><br />
3 - Click on the Paper type and select "Unspecified"<br /><br /><img src="http://www.myfriedmind.com/techBlog/content/binary/hpCardstock3.JPG" border="0" /><br /><br />
A couple of notes:<br /><ol><li>
Users may need to remove/add the printer back for this to get pushed down.</li><li>
This is NOT Printing Preferences. The same screens are there, but they will not fix
this, although they should be changed as well.<br /></li></ol><br /><img width="0" height="0" src="http://www.myfriedmind.com/techBlog/aggbug.ashx?id=07f5f354-1a1a-43f2-902c-35b7bcde495f" /></div>
    </content>
  </entry>
</feed>