Showing posts with label Vista. Show all posts
Showing posts with label Vista. Show all posts

Monday, September 20, 2010

There was a problem sending the command to the program

I hate error messages like that. It’s both detailed and vague at the same. What command was being sent and what was the problem? Let me back up a few steps. A family member bought a new PC running Windows 7, for his home office. He works from home and accesses his work email account through Internet Explorer.  His email based on Domino Web Access, which I’m assuming is the web bit for Lotus Notes email.

When ever he was sent a document like an Excel file or Word file as an email attachment, he was unable to open the file.  He would double-click on the icon for the file, and Domino web page would spit out “There was a problem sending the command to the program”.  He has Office 2007 installed and we verified that it was working just fine.

If he tried to save the file from Domino, he would get prompted for a folder to store the file and he would try to save it is his documents folder. It went through the motions of saving the file.  No error messages, but the file wasn’t there. I repeat, there was no error message. I took a peek at the file system and found the file in an odd location. All the files that he had been trying to launch were in “c:\users\hisname\AppData\Local\Temp\Low\Domino Web Access\80\”. The “Low” part of the folder name tells us that Internet Explorer was redirected by Windows.

Starting with Vista, IE 7 runs with “low” privileges. The temporary files, cookies, and history folders are now in “low privilege” folders. Access to protected locations (root folder, documents, “my programs”, etc) is redirected by the operating system to the %LocalAppData%\Temp\Low folder. The folder virtualization that Vista/Win7 uses is pretty transparent the application. Unless the application checks for the file after it writes it (or knows about folder virtualization), it will not know that the file is in a different location. That explains why the files were not in the right location, but we still needed to figure out why they couldn’t be launched by the browser.

After a bit of searching, I figured out the problem. He just needed to add the webmail server site as a “Trusted Site” in the Internet Explorer security options. With Windows 7, he needed to do the following steps in Internet Explorer 8:

  1. From “Tools” menu, select “Internet Options”.
  2. On the “Security” tab, click “Trusted site” in the “Select a zone to view or change security settings.” panel.
  3. Click the “Sites” button.
  4. Under the “Add this website to the zone:”, enter the URL for the web mail site and click the “Add” button.
  5. If the URL starts with HTTP instead of HTTPS, make sure that the “Require server verification (https:) for all sites in this zone.” check box is cleared.
  6. Press the “Close” button.
  7. Press the “OK” button.

That will tell Internet Explorer that it’s safe to launch binary applications from the web mail application. It’s sounds annoying, but it’s just Microsoft trying to keep rogue web sites from running nasty programs.

Thursday, February 25, 2010

What to do when a Windows 7 desktop icon has the wrong image

We are in the middle of rebranding our applications and as part of the rebranding, the icons for each application have been updated.  We are having lots of fun cramming Vista styled icons through ancient resource compilers, but that’s another story.

We provided a rebranded application to our QA tem for testing.  The first thing the QA manager did was to drag the app to her Windows 7 desktop, replacing the previous version.   Oddly enough, the image appeared for the icon.  I went back and checked the build process, that image was no longer there.  yet, it appeared on her desktop.  It also occurs with Vista as well.

I had originally posted how to do this by deleting the iconcach.db, but that is such a crude hack that I have pulled it.  After posting this message, I came across a much simpler mechanism. 

If you call SHChangeNotify(SHCNE_UPDATEDIR, SHCNF_IDLIST, 0, 0), from shell32.dll, this will cause the icon cache to be refreshed.  This happens in real time, no need to restart explorer or rebooting.  This is easy to call from just about every programming environment. If you need a stand alone app,  Helge Klien wrote a simple command line tool and posted it at Free Tool: Refresh the Desktop Programmatically.  I’ve added the SHChangeNotify() call to my installers, the users will never be bothered by this.

Saturday, August 22, 2009

Offload TCP processing to the network controllers under Vista, Server 2008, and Windows 7

After upgrading my home PC to Windows 7, I was decided to see if my motherboard/CPU combination support hardware virtualization.  You need hardware virtualization support if you want to run Windows XP Mode or Windows Virtual PC.  I have an XMD Athlon X2 with an Asus M2N-SLI Deluxe and I’m not sure if that combination supports hardware virtualization.  I’m pretty sure the CPU does, but I don’t yet yet know about the motherboard.

I decided to check the  Asus support forum to see that motherboard supports hardware virtualization and while reading through the forum, I found an a post about tweaking the network settings for a boost in performance.  The TCP/IP stack in Vista has the ability to offload some of the network processing to the network controller, if the network controller has that capability.  Out of the box, Vista disables that feature to prevent problems with controllers that don’t support that feature.

From what was posted in the Asus forum, this motherboard does support that feature.  This motherboard is based on the NVIDIA nForce 570 chipset, which included dual Gigabit LAN controllers.  If you are doing CPU intensive tasks, you can gain some performance benefit by offloading the TCP processing to the network controllers.

Vista refers to this setting as the “Chimney Offload State”.  It’s easy to check and set this value.  if you have a newish motherboard with a Gigabit speed network controller, this should work for you.

To change this setting, do the following:

  1. Open an elevated command prompt.  Either right-click cmd.exe and select “Run as Administrator” or press the Start button, type “cmd” and then hold the left shift and left control keys while pressing the enter key.
  2. Check the current status of the Chimney Offload state by running the following command:
    netsh int tcp show global
    The possible values for that state are: disabled, enabled, default
  3. Run the following command to enable Chimney Offload state
    netsh int tcp set global chimney=enable

Before making the changes, check your current broadband speed.  I like the one at speedtest.net, but the others are fine.  Then after making the change, check it again.  If the performance takes a hit, set the state back to it’s original value.  Not only did it work for me, I did get a slight, but measurable, download speed increase.

Before enabling Chimney Offload:

546138390[1]

After:

546142573[1]

These tests were run a few times before and after the modification.  I picked the average score each time.  That helps even out any existing network traffic that would affect the results.  Going from 17.42 MB/s to 18.70 wasn’t a huge increase, about 7%; but I’ll take it.  There are other settings that you can tweak.  Some are mentioned in the forum posting, and they are also documented in an article in speedguide.net as well.  You don’t often get a free lunch, this is a good one to take.  This setting works for Vista, Server 2008, and Windows 7.  I still don’t know if I can get hardware virtualization, but this was an interesting diversion.

[edited on 8/24/09]
As it turns out, my CPU and motherboard do support hardware virtualization, it just took a little work.

Monday, August 11, 2008

Why www.nbc.com wont load with IE7 on Vista (and how to get around it)

My kids wanted to watch the Olympic swimming events going on in Beijing.  Since NBC is streaming all the venues, I figures I would just fire up the web browser and wander over to www.nbc.com.   We have a “family” pc that everyone can use and it runs Vista Home Premimum (32-bit), with Service Pack 1 installed.  Since I knew that NBC was going to be using the Microsoft stack with Silverlight to stream the video, I figured I would have the least amount of headaches with Internet Explorer 7.  Wrong!

When I entered in http://www.nbc.com into IE, I got the following error: “Internet Explorer cannot display the webpage”.  I figured I mistyped the URL, that wasn’t it.  Out of the relatively small combinations that the letters N, B, and C can be arranged, I did have the right URL.  Could it be that NBC.com was done?  Nope, I tried “ping –n 1 www.nbc.com” and received the following

Pinging a1669.g.akamai.net [128.242.186.219] with 32 bytes of data:                               
                                                                                                 
Reply from 128.242.186.219: bytes=32 time=44ms TTL=55                                            
                                                                                                 
Ping statistics for 128.242.186.219:                                                             
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),                                         
Approximate round trip times in milli-seconds:                                                   
    Minimum = 44ms, Maximum = 44ms, Average = 44ms                                                




That tells us that their site is live and responding to requests.  Just for giggles, I launched FireFox 3 and entered in the URL.  Sure enough, that worked just fine.  What was the problem with nbc.com and IE7?  I did a search with Google (and Yahoo for a change of pace) and saw that a number of people were reporting the same problem.  No one knew the cause and the only resolution was “just use Firefox”.  Normally, that would be an acceptable answer for me.  Today, I’m feeling a bit cranky and I want to know what the problem is between nbc.com and IE7.  The odds are it’s something trivial on the nbc,com side.  We haven’t had any problems with IE7 on Vista before.



I did notice that a lot of people reporting the problem had Tablet PC’s. I don’t have a Tablet PC, it’s just an plain ol’ Dell desktop.  But I did install a Wacom Bamboo tablet and installing it’s drivers did activate some user input functionality in Vista that wasn’t there before.  Why would this affect the browser?  As it turns out, when Vista thinks it’s now a Tablet PC the user agent string sent by IE changes.



Here’s the typical user-agent string sent by IE7 for various operating systems.



For Windows XP SP2: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

For Windows 2003 Server: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)

For Windows Vista: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)



Note, these are the base strings, different applications can change or add to these values.  On my machine, the user agent has some information:



Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 3.5.21022; Tablet PC 2.0; Creative ZENcast v2.01.01)



That says that I’m running IE7 on Vista, with .NET 2, 3, and 3.5 installed.  Media Center extension are installed, it thinks it’s a Tablet PC, and I have Creative’s Zencast (a podcast download app).



Notice the text in bold, “Table PC 2.0”.  When that text is submitted to www.nbc.com as part of the user agent, the website is doing some sort of re-direct that is failing.  So we have what appears to the cause of the problem, now how do we fix it.  I tried faking out the user agent string with a download from Microsoft called the User Agent String Utility, version 2.  Don’t event bother with that one.  It opens up a new browser window that has been tweaked to report itself as IE 6.0 but that’s the only part of the user agent string that gets modified.  It still uses “Table PC 2.0”, so the problem still remains.



In theory, you can edit the list of items that get tacked on the user agent string by hacking at the registry.  With IE7, the list of fields added to the user agent string are defined as REG_SZ values in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform.  I tried removing “Tablet PC 2.0” from the list, but the OS kept putting it back in.  Plus, we really shouldn’t have to modify our systems, the problem is due to www.nbc.com not sniffing the user agent string correctly.



I did a little searching on the Internet and I found a working solution here.  Instead of using www.nbc.com as the starting URL, use www.nbci.com.  That site bypasses the user agent check and it allowed me to the live feeds of the Olympic events.  A very simple solution, but a typical home user would never figure it out on his own and just blame Vista for it.

Tuesday, June 17, 2008

Proof by lack of evidence

CNET’s Matt Asay wrote an article for CNET’s News.com that was just so bad, it gets the “Epic Failtag.  You can get the gist of how bad it is by the first few lines:

Vista's big problem: 92 percent of developers ignoring it

And to think Microsoft used to be popular with the developer crowd...

Not anymore. A recent report from Evans Data shows fewer than one in 10 software developers writing applications for Windows Vista this year. Eight percent. This is perhaps made even worse by the corresponding data that shows 49 percent of developers writing applications for Windows XP.

Wow, I’m not sure where to start on this one.  I started by visiting the Evans Data web site that Asay refered via this link.  It was vague and provide no actual metrics.  How that “one in 10” number was arrived that was never specified.  Sounds pretty bogus to me.

What they did say was this:

Only eight percent of North American software developers are currently writing applications to run on Microsoft's Vista operating system, while half are still writing programs for XP, according to Evans Data's Spring 2008, North American Development Survey. These same developers forecast a fragmented Windows market in 2009 with only 24 percent expecting to target Vista and 29% expecting to continue with XP.

8% of what?  Is that 8% of all developers writing for the Windows Desktop or is 8% of all North American software developers.  The former is a subset of the latter.  Did they exclude web developers from that count?

The other question is what do they mean by writing for Vista?  Does that mean writing for features specific to the Vista platform or does it mean writing the code so that it behaves under Vista?  Did they break that out by managed code as compared to unmanaged code?  If you are writing managed code like for the .NET Framework or Java, then you are not targeting an OS, you target the managed code framework.

Since Matt conveniently left out any actual numbers, I can use myself as a sample set.  A sample size of 1 is just as relevant and/or meaningless as an undefined sample size. I write shrink-wrapped applications for the Windows desktop market.  I do both Win32 coding (with Delphi 2007) and for the .NET Framework (with Visual Studio 2008).  All of my code is tested on XP, Vista, Server 2003, and Server 2008. 

With the .NET Framework, I have no code that is OS specific and I didn’t have to change any of it for Vista or Server 2008.  For the Delphi code, some minor changes were made to account for the location of the local application data folder.  That was all we had to do.  It’s something like 5 lines of Delphi code out 500,000+.  Of course by using Delphi 2007, we get the benefit of the Delphi VCL being Vista aware.  We get the Aero Glass effects and the new UI for dialogs without any code changes.

Does that mean we are not targeting Vista?  No, it just means for our applications, that Windows XP and every OS that comes after it is tested and supported.  That leads back to the critical failure point of Matt Asay’s article.  He’s making broad assumptions based on no evidence.  I’m reminded of that old quote by Leonard H. Courtney, “There are three kinds of lies: lies, damned lies, and statistics.”

I don’t usually read news.com anymore, in fact I came across Matt Asay’s article in a blog post by Steve Trefethen.  So I’m not familiar with Matt Asay’s body of work.  I don’t know if he wrote this out of ignorance out or as Steve put it: “written for no other reason than to generate traffic for c|net.”  I would like to know how much actual research Matt performed for his article.

The title of this post comes from the “You Are Wrong Because” portion of Scott Adams book, “The Joy of Work: Dilbert's Guide to Finding Happiness at the Expense of Your Co-Workers”.  The context was that Adams has stated that irrational people are easily persuaded by anything that has been published.  I think that’s applicable with with Matt Asay’s article.

{updated on 6/23/08]
I removed the link to Matt Asay’s article because I didn’t want to give him any more traffic.  It’s not that there would be a lot coming from my blog, it’s more of a principle thing.  I had originally included a link so that people could make up their own mind, but I think I have enough of his article to make my point.  And if you really want to read it, you know where to find it.

Saturday, May 24, 2008

IPv6 and Vista

The other day, I read a post that Carl Franklin had made on his blog about a new Vista laptop that he had to buy on short notice.  The gist of his post that Vista ran pretty well, but he did tweak some of the settings.

One of the settings that Carl had tweaked was to disable IPv6 on all of the network adapters.  For some reason that jumped out at me.  I posted a comment on his blog asking why he did it.  I'm all for disabling services that are not being used, but I like to know what the reason is behind it. 

I did a quick scan through Google, and initially found many hits for how to disable IPv6 with very little explanation on why you should do it.  Carl responded to my comment that he had heard anecdotal evidence that IPv6 can cause conflicts under Vista.

For me, the decision to disable IPv6 on my Vista boxes boils down to two questions:  Do I need IPv6 functionality?  If I don't need IPv6, does having IPv6 enabled cause any problems under Vista?  Time to go back to Google and due some more searching.

One bit of trivia:  While I was searching for why you would want to disable IPv6 on Vista, I came across a few articles about how Google owns a large block of IPv6 space that works out to be 7.9 x 1028 IP addresses. That's a large number, no matter how you slice it.   Why does our Google Overlord need that many addresses?

I've seen the badge below displayed on a few sites. 

Pretty scary looking, huh?  There is a real concern with the number of IPv4 addresses being used up.  At the current rate of assignment, we just have a few years left before the all of the addresses have been assigned.  That's why they came up with IPv6, to provide for a virtually unlimited number of IP addresses.  Even with Google hogging billion and billions of IPv6 addresses, we'll still more than enough to serve this planets needs for the for seeable future.  Right now, the continued use of NAT allows more users to share the same IP address. 

We are seeing all of the IPv4 addresses being assigned, but that doesn't mean that they are all being used.  If you look at the global IPv4 allocation list, you'll see that large chunks of the IPv4 space is in the hands of a small number of companies.  For example, Apple owns all the 017.xxx.xxx.xxx addresses.  That's over 16 million distinct, global IP addresses.  What are they doing with all those addresses?  And some people still question the need for IPv6 in the first place. 

But I digress, I think we'll be safe with just IPv4 addresses for the next few years.  At this point, there are no IPv6 only addresses that I want to visit.  They exist, I just don't need to visit them.  So the answer to my first question is: No, I don't need IPv6.

So what about leaving IPv6 enabled in Vista?  What does that cost me?  I read about some reports early in the Vista release with IPv6 issues.  Some of that could be attributed to "version 1.0" network drivers.  I did read some reports of http://localhost not working with IPv6 enabled. 

On an IPv6 enabled box, localhost will evaluate to ::1, not the 127.0.0.1 that we call home.  That is what defined for localhost in %SystemRoot%\system32\drivers\etc\hosts as the IPv6 adddress for localhost.  This apparently causes a problem when testing locally hosted websites.  If you remove (or better yet, just comment out the ::1 entry from the hosts file, that was reported to allow web development to continue using localhost and IPv6 installed.

Klaus Graefensteiner has a pretty good explanation of why this is happening.  As noted elsewhere, he recommends editing the hosts file as the work around. I haven't done any web development on my Vista box, I can't verify that this is still an issue.  I'm actually planning on doing some web development work from my home machine in the near future, issues with localhost will pop up pretty much immediately. 

As far as I can tell, the answer to my second question is "maybe".  If the only issue is the localhost issue, then I'll address it through editing the hosts file as opposed to disabling IPv6 altogether.

I did see the value of one point that Carl made.  If the service is not being used, then disable it.  It's not enough of an issue for me, but resources are limited, then you want to pick off the low hanging fruits from the list of running services.  If you do actually want to disable IPv6 in Vista, it's pretty easy to disable or enable IPv6 support (from numerous sources, this one from TechSupportForum.Com)

  1. Go to Start and type in "ncpa.cpl" (without the quotes) and press Enter
  2. Right click on each network connection and select "Properties"
  3. Remove the checkmark from the box next to "Internet Protocol Version 6 (TCP/IPv6)
  4. Click OK to exit the dialog

Lather, rinse, and repeat for each network connection. IPv6 will still remains active for routing and tunneling.

To complete disable IPv^ in the system, you'll need to add a registry.  Go to registry and create DWORD parameter "DisabledComponents" in HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters and set it to a value of 0xff and restart the system.

Just remember one thing, if you disable IPv6, you will not be able to use Windows Meeting Space or any application that relies on the Windows Peer-to-Peer Networking platform or the Teredo transition technology.

Bonus Firefox tip:  You can disable Firefox's usage of IPv6 with out disabling IPv6 for the rest of the system.

In Firefox, type about:config and then in the filter box type dns. You'll see an entry named "network.dns.disableIPv6".  Double-click that line so that it reads True, which will effectively disabled IPv6 for Firefox.  You'll need to restart Firefox for this change to take effect.

Tuesday, April 29, 2008

My "Windows Feedback" copy of Office 2007 Ultimate just came in

I just received a NFR copy of Microsoft Office 2007 Ultimate in the mail.  Last December, I signed up for the 2008 Microsoft Windows Feedback Program Sweepstakes.  This was a three month program run out of the Windows Feedback Program.  As part of the program, I installed some software on one of my home PC's that recorded some basic metrics such as Windows settings, hardware details, how the common document folders are being used, changes to the system, and problems that may occur.

This information was sent back to Microsoft to provide information on how our PC was being used.  In return for allowing MS to collect this data for 3 months, I was given a choice of several different products from Microsoft (Vista Ultimate, Office Ultimate, Money Plus Premium, Encarta Premium, or Streets and Trips).  I opted for Office 2007 Ultimate.  I didn't need another copy of Office right now, but it would handy the next time I get a new machine.   Apparently the response to this offer was so huge that Microsoft closed the program to new entrants after only a day or so.

In addition to the monitoring software, I was required to answer at least one survey during that time period.  Oddly enough, I was only prompted once during the 3 month period to answer a survey.  At this point, I'm no longer obligated to run the monitoring software and I haven't decided whether or not to uninstall it.  I'm not a big fan of monitoring software, but I'm not seeing any performance impact and I'm satisfied with the privacy issues with the data being sent back.  I know some people roaming the series of tubes were calling this spyware, but technically the WFP software isn't spyware.  Most definitions of spware define it as software that collects data or controls a computer surreptitiously and was installed without informed concept.  I knew what it was doing and I opted in, which means it's not spyware.  At most, Microsoft now knows how much time my kids spend at Webkinz World.

It would be nice to see what data was being sent back to the mothership, but if MS is following their own Terms of Use for this program, my privacy concerns have been satisfied.  This is in strong contrast to a program launched by Sears Holding Corp (SHC). at roughly the same time, where they wanted to install some software that would be a lot closer to the definition of spyware.  The software that Sears wanted to install was a web proxy from ComScore (never identified as such by Sears) that would track all of your web usage and sent that data to Sears.

The software used by SHC is a web proxy program supplied by Comscore.  It redirects all of your web browser activity through the Comscore software and that data can be sent to Sears.  SHC notifies the user that the user is about to install some software, but it does not go into full detail about what data is being collected and what is being sent to Sears.  At no point during the installation process or preliminary email is the software identified or it's functionality  described.  A person with computer security experience would realize what is going on, but the average computer user would have no idea what they just installed.

With the security breaches on Sears web site earlier this year, I would be very hesitant with letting Sears have access to my personal information.  I understand why Sears would want to know what I shop for online, and I don't mind sharing that information.   Sears has no business knowing how I pay for those items and has no business viewing my email.  Comscore's tracking software would monitor all of that.  All privacy issues aside, that's a horribly inefficient means of tracking online shopping.

It also looks a little funny that the guy in charge of this program, Rob Harles, was a former senior vice president at Comscore.  Comscore is the vendor for the tracking software that the SHC wants to install. Ben Edelman, assistant professor at the Harvard Business School who focuses on spyware practices, did a great write up about the SHC sofware.  He documented in clear detail (with screenshots and video) that the installation steps violate FTC guidelines.  If you Google for Sears & spyware, you'll get close to a quarter of million hits.  That's not what you call good publicity, but I digress.  When I participate any sort of consumer feedback program, I take a close look at what would be installed and what will be collected.  I also check to make sure that the company collecting the data is collecting the right data and will respect my privacy.  Microsoft met those concerns.

Saturday, April 19, 2008

System Restore and Vista

After reading the comments posted to my blog entries for USB issues caused by KB938371, I can't over emphasis how valuable it is to have System Restore enabled.  While trying to find a work around for the mouse problems that I reported here, here, here, and starting at here; I noted that a few of the people who had posted responses or had sent private email did not have System Restore available.

I was surprised by that as System Restore is enabled in all SKU's of Vista by default and it's greatly improved over the System Restore feature in XP.  If you are not familiar with System Restore, I'm going to borrow the following from the Wikipedia entry

it's a feature that periodically takes a snaphot of the current state of the operating system, typically referred to as a restore point.  Windows uses Shadow Copy (aka Volume Snapshot Service or Previous version) to create a file that contains system files, registry settings, drivers, installed programs and stores the data in a single compressed file.  User settings and files are typically not covered.

This restore point will be generated under the following conditions:

  • when a piece of software is installed
  • when Windows Update installs new updates to Windows
  • when the user installs a driver that is not digitally signed by Windows Hardware Quality Labs
  • every 24 hours of computer use , or every 24 hours of calendar time, whichever happens first
  • when the operating system starts after being off for more than 24 hours
  • when the user requests it.

When Windows Update pushed KB983371 down to my machine, System Restore created a restore point of the current state of the OS just prior to the installation.  This allowed me to easily roll back the installation of the update.  Since 938371 does not allow itself to be uninstalled, roll back the system via System Update was the only documented way of removing 938371, short of reinstalling Vista.

If for some reason you have disabled System Restore, you really should consider turning it back on.  I have seen a few sites mention how to turn it off (but for the most part they do warn you of the consequences), but you really want to leave it on.  I have had to use System Restore a couple of times and it really got me out of jam.  If you need to re-enable System Restore, the following steps should work for you:

  1. Click on the Start button.
  2. Right click on "Computer" ,and then select Properties. (Also reachable as the "System" applet on the Control Panel.
  3. On the left hand side of the Control panel->System dialog, click Advanced Settings.  If the User Access Control dialog rears it's ugly head and propmtps you to permit the action, click on Continue (or OK) to allow you to continue.
  4. Click on the System Protection tab.
  5. In the group box labeled "Automatic Restore Points", check the checkboxes listed for your hard drives.  Some PC's come with special partitions used for vendor specific diagnostic and restore functionality (Dell PC's typically have a special partition labeled "RECOVERY", leave those partitions unchecked.
  6. Press OK to save the changes.

There's rarely a free lunch in this business, and there is a cost to using System Restore.  This cost is pretty simple, it will use up to 15% of the space on the drive, with 300MB as a minimum.  You also need to have a drive larger than 1GB to use System Restore.  With the huge drives now available to today, the benefit clearly out weighs the cost.

Wednesday, April 16, 2008

Microsoft admits that KB 938371 kills USB Devices

Various reports on the Intertubes are reporting that Microsoft has acknowledge that last weeks Vista Update, 938371, has been causing "problems" with USB devices.  The money quote:

“We are aware of concerns that a recent Microsoft update may be causing problems with USB devices. We are investigating the matter, and at this time, do not have any information to share.”

Supposedly this was an update to fix a security hole in Windows Defender.  Read about more people hit by 938371 in MS's own forums.

This is starting to feel like an endless series of misadventures with 938371.  See Work around for KB938371 disabling HID-compliant input devices , KB 938371 woes continue and the first post, Vista update KB938371 disabled my mouse.

I just want to know when a permanent fix will be available.  Come on Microsoft, there is enough people reporting this problem that you should be able to reach out for more information to help diagnose and fix this problem.

Sunday, April 13, 2008

Work around for KB938371 disabling HID-compliant input devices

After a few days of non-working mice, someone found a work around for KB938371. As I noted here and here, Vista Update 938371 disabled two the three mice I have I on my main home machine. Here's the work around that actually worked for me:

  • Just go to device manager -> HID-devices -> Unknown Device and search for drivers.
  • When prompted for how to search for driver software, select "Browse my computer for driver software"
  • Enter "C:\windows\winsxs" for the driver location and press the "Next" button.
  • If you get a popup saying "this is an unsigned driver...", just allow Windows to install the driver.

At this point, Windows should select the appropriate driver and your mouse will start working again.  When I tried this, only had one of the non-working mice plugged in.  When I followed those steps, the mouse started working.  I plugged the other mouse in and Windows enabled it without any prompting.

I went in to Device Manage and both mice were listed as "HID-compliant mouse" under "Mice and other pointing devices".  Just to be safe, I selected one the mice, right-clicked into "Properties, selected the "Driver" tab on the dialog that opened up.  I clicked the "Driver Details" button and the mouse was using mouclass.sys and mouhid.sys drivers, located in c:\windows\system32\drivers, which is what they were supposed to be using.

This tip was originally posted here and I came across it here.  I'm happy that I have my mouse functionality back, but how did this get past Microsoft's testing?  I saw too many people reporting this, it's not an isolated case.  I have a mouse that comes with my Wacom table that wasn't affected by this snafu, but what about the people who just had regular USB mice?  They were/are pretty much screwed by an update that can't be uninstalled with running System Restore. 

I still want to know what happened and why 938371 toasted my HID-compliant hardware.  Was there something broken already with my Vista installation and 938371 was just a symptom of the problem, or did 938371 actually break something?

I'm not allowing MS to automatically update my PC anymore.  That requires a certain level of trust that MS is going to push down updates that will be beneficial.  They just blew that trust.  I'll take the updates, but I'm going to decide if and when they get installed.

I was asked offline why I have three mice.  It's pretty simple (almost makes sense).  My day to day mouse is a Logitech MX™700.  It's a cordless mouse that uses rechargeable batteries.  It's been the best mouse that I have ever used and I continue to use it under Vista even though Logitech never ported the MX700 drivers to Vista.  It has a little dock that charges the batteries.  I almost always forget to put the mouse back in it's dock and a every few days, the batteries give out.  When that happens, I place it back in it's dock and use a Dell USB optical mouse while the MX700 is charging.   The third mouse is a digitizer mouse that comes with my Wacom Bamboo Fun tablet.  That mouse works, but only on it's little pad.  It was OK enough to use while tracking down this problem, but I wouldn't want it to be my everyday mouse.

Update: 2/22/2010
I repaved this machine with Windows 7 about 6 months ago and replaced the MX700 with a Logitech mouse that is supported under Windows 7.  For anyone that is still having this problem, consider Windows 7.  It’s much nicer than Vista.

Friday, April 11, 2008

KB 938371 woes continue

I still haven't been able to fix the problem that I reported yesterday.  After blogging about how Vista update KB 938371 disabled the mouse on my PC, I have found other people reporting the same problem.  The mouse shows up in the Device Manage as "unknown device".  If I try to install a device driver for it, it fails with the error dialog "Found New Hardware - Unknown Device) and displaying the following text:


Windows encountered a problem installing the driver software for your device

Windows found driver software for your device but encountered an error while attempting to install it.

     HID-compliant device


An error occurred during the installation of the device

The driver installation file for this device is missing a necessary entry.  This may because the INF was written for Windows 95 or later.  Contact your hardware vendor.

This occurs with any USB port on my machine and with both of my mice.  I have a Logitech wireless mouse and a basic Dell USB Optical mouse.  I have a mouse with my Wacom tablet that still works.  It has it's own drivers and MS didn't touch them.  I even took the Microsoft Optical mouse off my wife's Vista machine (which is working fine with 938371) and plugged into my machine.  It didn't work either.

If I do a System Restore and rollback to the point just before 938371 was installed, the mice work.  As soon as I install 938371, I lose the mice. This is really frustrating as 938371 is a prerequisite for SP1.

I've been posting this tale on a new message boards and blogs.  I'm not the only person having the problem, but we have yet to identify what we have in common that is triggering this.  My machine is running Vista Home Premium, 32-bit, on an ASUS M2N-SLI Deluxe motherboard. The M2N is NVidia NForce based and I have an AMD Athlon X2 processor in it.  You can read about other peoples symptoms in this MSDN Forum thread,  this thread I started on an NVidia fan site, and a message that I posed in the Windows Vista Blog.

Thursday, April 10, 2008

Vista update KB938371 disabled my mouse

Windows Update just pushed down an update, KB938371 on to my main home PC, as a prerequisite for Vista Service Pack 1.  After that update was installed and Vista rebooted, I lost all mouse functionality.  The only way I could get mouse functionality back was to run System Restore and restore the OS to the point to just before 938371 was installed.  For me, selecting the recommended restore point was as far back as I needed to go.

I have installed 938371 twice now by itself, each time I lose mouse function.  My machine was custom built for Visa Home Premium, but it uses a pretty standard motherboard, an ASUS M2N-SLI Deluxe, which uses the NVidia NForce chipset.  I have a Logitech MX™700, which uses the Vista input drivers and mouse that comes with the Wacom Bamboo Fun tablet, which has it's own Vista drivers.  I also have Dell USB mouse which I use when I'm recharging the batteries in the MX700.  None of them worked after 938371 was installed.  I think it would be a fair assumption that other features are broken, but I didn't bother to check.  The machine was unusable without a working pointing device, I concentrated my efforts on rolling back 938371.

938371 is an non-removable update.  It wont show up in the "Uninstall or change a program" list under "Control Panel\Programs and Features".  System Restore is the only way that I know to yank it out.  I don't think I'm only one having this problem.  I posted a message about this on an NVidia enthusiasts board and saw an immediate reply on this blog as a comment to a non-related post.

Service Pack 1 for Vista is out now and it requires 938371 as a  prerequisite.  Which means I can't install SP1 without running a mouse killing update.  I'm trying to decide if I can install SP1 and hope for the best.  If it fails, I'm without a pointing device and makes Windows somewhat less than usuable.  I would prefer to resolve 938371 before installing anything else.  The advantage of trying SP1 would be that Microsoft is providing free support for SP1 and this is definitely a SP1 support issue.

This could be the final straw that pushes me back Windows XP.  After using Vista for nearly a year, I'm tempted to repave with XP.  I have another Vista box at home that the family shares.  It's a Dell and while it has less functionality (my box has RAID 5), it has had any of the weird Vista problems that this machine has had.  I do wonder how many other people have had their mice disabled by this update.  If we can discover what we have in common, we get closer to determining what the root cause is and what fix there may be.

[Updated on 4/17/08]
If this is your first visit to my blog, please read this post for a work around that may work for you.

Saturday, February 09, 2008

Nvidia nForce network driver problem under Vista

On my home machine, I rarely reboot it. If a software update requires a reboot, then I do it. otherwise it stays running for weeks at a time. Vista (32-bit) has been stable enough for me, where I don't have to start the system or suffer system crashes.

But when I reboot, about 10% of the time (just a wildly inaccurate guess), the machine comes up without any network connectivity. In the past, I have associated it with Windows Update installing a wonky driver for the network card and I System Restore the machine back to normal. It happened today and the list of the usual suspects did not include any hardware updates. Time to dig deeper.

This machine has a NVidia nForce motherboard (Asus M2N-SLI Deluxe) and it has built-in dual Gigabit LAN controllers. I had an Ethernet cable hooked up to the first port and had disabled the 2nd one through Vista's "Network Connections" utility. My dead Windows Home Server box was next to my PC, so I unplugged it's Ethernet cable and plugged it into the second port on my machine. I enabled the network adapter and after a few seconds, it was live and had grabbed a IP address from router.

That was interesting. Since the working adapter used the same driver as the non-working one, that pretty much ruled out Windows Update nuking one of the drivers. I peeked at the driver settings for both adapter, they were both set to the defaults. I also checked the device status of the adapter, Windows reported that "This device is working properly." That was a pretty good indicator that the problem was not a fried controller on the motherboard.

The next thing to check was the ethernet cable. I swapped cables and there was no change. I decided to do the Nintendo fix. That's when you pull out the cartridge, blow on the connectors and ram it back in again. In this case, I disabled the adapter, waited 30 seconds, and re-enabled it. As Emeril says, Bam! The adapter started working. Time to start googleing and see if anyone else is having this problem.

And the number one hit for "nforce network adapter fails" in Google was a long thread in the Nvidia message forums. A sizeable number of people were having the same problem and they were all running Vista. It may be a timing issue during boot-up. Two workarounds were suggested. One was to change the duplex setting from "Full Autonegotiation" to "100 Mbps Full Duplex". The other was to change the priority order of the network adapter priority. I didn't want to mess with the driver settings, so I opted for changing the priority order. I'm not confident that it will fix the issue, but it wont hurt anything. Right now this is more of an annoyance than anything else, but I would like to resolve it permanently.

Thursday, January 24, 2008

Copying files with VS 2008's port-build event under Vista

I'm still working on my SmugMug plugin for Windows Live Writer. I've ported it from VS 2005 to VS 2008, that was trivial. I'm at the point where I want to debug the plugin while it's being loaded from Live Writer. Normally, this is pretty straight forward. You use the post-build event to copy the plugin's files to the Live Writer plugin folder. For my plugin, I used the following build event:

xcopy /D /R /Y "$(TargetDir)s*.dll" "C:\Program Files\Windows Live\Writer\Plugins"

The next step is to go into the Debug settings for the project and set the Start Action to Start external program, setting it to the path to the Live writer executable. On my machine, that would be:

C:\Program Files\Windows Live\Writer\WindowsLiveWriter.exe

With that set, all I need to do is to press F5 and my plugin gets built, copied to the Live Writer plugin folder, then Live Writer gets launched. Sounds good, but when I did a test build to verify the files would get copied, I got the following error message:

"XCOPY /D /Y /R "C:\dev\DotNet\LiveWriter\SmugMug4WindowsLiveWiter\SmugMug4WLW\bin\Debug\s*.dll" "C:\Program Files\Windows Live\Writer\Plugins\"
" exited with code 4. SmugMug4WLWPlugin

Code 4? I had to get Mr Peabody to look that one up for me. DOS 3.2 ring a bell? At any rate, exit code 4 for xcopy is "Initialization error (not enough memory, invalid syntax, path not found)". That actually was a clue to what the problem was, I was just missing the obvious. I tried pasting that xcopy command into a Take Command shell window and it ran without errors. So the syntax was correct, something was blocking it.

D'oh! I'm doing this under Vista. Joe User can't just copy files into "program files" space, that's no longer allowed. Only administrators have write access to "program files" and I'm running VS2008 without elevation. I run my Take Command shell as admin, so of course it can write to the plugins folder.

To get around this, I decided to punch a hole through Vista's default rights for that folder and give everyone and their dog full access to it. I tried doing it through icacl, but I wasn't getting the syntax right. So I just opened up explorer, selected the plugins folder, right-clicked and selected "Properties". I then selected the "Security" tab and then selected Users under "Group or user name". Next, I clicked the edit button, to bring up the edit dialog for the access rights. I selected "Full Control" and then clicked "Ok" all the way home.

That fixed it. VS2008 was able xcopy my plugin without any errors.

Monday, July 23, 2007

File sharing with Vista Home without passwords

After having several PC implosions, we now have two new Vista boxes at home. Both have Vista Home Premium installed. I'm used to the relative stability of XP Pro, but I figured I would give Vista a shot. For the most part it has gone very well, but I made sure that each machine was going to be able to run Vista.

My machine is a custom built box from MWave, my wife's is a Dell box. She has Intel, I have AMD, but they are both dual core machines with 2GB of RAM and decent video cards.

My wife and my kids have user accounts with out passwords. The machine has the usual security apps installed and is behind a router firewall. Their accounts are set as Standard User. I have a password protected admin account on each box. My wife has a Standard User account on each box.

We share a printer from my machine. I could print from my wife's PC, but she couldn't. She kept getting a login pass prompt and finally an error message about being able to validate credentials. It took a little while to figure out, but finally I remembered that out of the box, Vista wont let non-password protected accounts from remotely authenticating. That means that you need a password on your account to access network resources on another Vista box.

A fair amount of Googling kicked up a few suggestions to run gpedit.msc (Group Policy Editor). Most of the suggestions were of this type:

Run gpedit.msc
Go to Computer Configuration / Windows Settings / Security Settings / Local Policies / Security Options
Double click on Accounts: Limit local account use of blank passwords to console login only
Disable this option

One little problem. You only get gpedit.msc with XP Pro or Vista Business (or Ultimate). Thanks for playing the Home version of Windows, you don't get that useful little utility.

Fortunately for this setting all gpedit.msc is doing is writing to the registry. All you have to do is to edit the following key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

and edit the value of LimitBlankPasswordUse from 1 to 0. After you do that, you can now share printers and folders across Vista (and XP) with accounts that do not have passwords.



Updated on 8/15/2008
If you install Service Pack 1 (SP1) after making this change, you'll need to do it again as SP1 restores this setting back to the default.


Friday, May 18, 2007

Time to get a new PC

My home PC died last Friday and I'm waiting for it's replacement to show up. I've had the machine for years and it's been running 24/7, something was bound to fail. The fan on the video card was starting to lock up and I'm pretty sure that the main hard drive is toast. It was a decent machine back in 2002, an Athlon XP 2000 with fast memory and drives.

The new box will be dual cores with lots of memory and RAID 5. I've lost 4 drives in the last year, I wont use another desktop without RAID. I looked at getting Dell, but I really didn't want to spend a lot of money. You can get cheap boxes from Dell, but not with what I wanted.

I like spec'ing out the components, you never know exactly what you will be getting from Dell. I've had good luck with custom boxes built by MWave. I basically picked out the components that I wanted and they assembled it and burned it in for me for a small fee. It's already been shipped, I should have it early next week

This is what I ordered:

  • Asus M2N-SLI Deluxe: A decent motherboard with everything I need on it, including RAID. The onboard sound board isn't the best one, but it will do for my needs. I'll probably salvage the Audigy card out of the dead machine if I need a better sound card.
  • AMD Athlon 64 X2 4800+ (Brisbane): Two cores and energy efficient. I never get the fastest CPU, I always bring down a few notches. The difference in speed will not be perceptable and I can spend the extra money on more memory, which will make the machine faster.
  • 2 GB Ram: With Vista, 2 GB is the bare minimum. I'll probably bump it up later
  • GIGABYTE GV-NX86T256D GeForce 8600GT 256MB 128-bit GDDR3 PCI Express x16 Video Card: It's fast, it's cheap, and it's got a big honking heat pipe to cool the card without a fan. Not having a fan means a quieter PC and one less moving part to break.
  • Maxtor 250GB SATA-300 drives: MWave had these drives fro $60, so I bought three of them for the RAID 5 array. With Maxtor's purchase by Seagate. it looks like these products were being discontinued.
  • Lite-On LH-18A1P 18X DVD RW drive: I've had good luck with Lite-On drives before and it was a good price. It's not their fastest writer, but it will be fast enough for the media that I'll be using for it
  • No floppy. The only time I have used a floppy in the last box was to flash the BIOS of the motherboard. If I can the new one to boot from a flash drive, I wont need the floppy. I may end up installing one as it's the typical way of installing RAID drivers when you do a Windows install. I could grab the floppy drive from thedead PC or get one that also has a memory card reader
  • Antec Sonta II case: I'v always liked Antec cases and power supplies and the Sonata is the right case for me. It's big enough to make working in the case easy, and it's very quiet. The main fan is 120mm, instead of 80mm. It can run slower (less noise) and push out more air than the 80mm fans. Another nice feature is that the fans and the hard drives are mounted on rubber, that really cuts down on the vibration noise.
  • Vista Home Premimum: I have mixed feelings about this one. I need more Vista hands on experience, but the horror stories are starting already. I could always install XP, if this OS is truly that awful, but I would prefer to work with Vista. This will also be my first experience with a "Home" labelled OS. I've been using XP Pro at home, but I rarely use the Pro functionality. I'm staying with the 32-bit version, even though the processor will support the 64-bit OS

Fortunately, the important files have been backed up. I put together a FreeNAS box a couple of months ago and I've been backing up source code and documents to it. The next time you buy a new PC, take the old one and toss FreeNAS on it. It just works.

Friday, March 23, 2007

Aero Glass on my ancient GX400

My latest video card arrived this morning and installing it was a much better experience than what I went through with the Diamond card. I have a Dell Optiplex GX400 that is about 5 years old. I installed Vista Ultimate on it so I could test apps under Aero Glass. That had ruled out VMWare. The GX400 has 5 empty PCI slots and an AGP4x slot. Since most new cards are PCI-Express or AGP8x, I tried a PCI based card. That experiment failed and I ordered a BFG GeForce 7600GS OC. It claimed to work with just about any AGP slot.

When it came in, I removed the old card and plugged in the BFG card. I turned on the PC and booted Vista up. Vista recognized the card and installed the GeForce 7600 drivers that apparently come with Vista and requested a reboot.

After the reboot, I was in 640x480 hell, but after a little twiddling I had a decent resulution and refresh rate. I did have to refresh the Windows Experience Index. It was at 1.0, hel back because of the video card. The graphics rating went from 1.0 to 5.9, and Vista enabled the Aero Glass theme automatically. The overall number was 2.7, but the CPU was the weak point, memory and HD access were 4.1 and 5.3. Good enough for what I need to do.

The BFG card was cheap in cost ($150+), but it came with a decent feature set. It will drive two monitors and I didn't have to install any drivers. It has 512MB of it's own memory and fully supports DX9. Not bad, not bad at all.

Wednesday, March 21, 2007

I'm not impressed with Diamond Multimedia support

I have a older PC that I just installed Vista. I want to make sure that our apps place well under that OS and I don't want Vista as my primary OS just yet. Usually I do that kind of testing under VMWare, but you don't get the full experience of the OS when it's virtualized.

This PC is older, a Dell Optiplex GX400 and has a NVIDIA TNT2 video card. It's a perfectly OK card, but Microsoft and NVidia are not doing a Vista driver for that card. So Vista is running it with the Standard VGA Graphics Adapter driver. The SVGA driver is better than I thought it would be, but it's slow and is running at 60 hz. I'm not terribly concerned over the speed, but the flickering is driving me nuts.

I got the OK to get a new card, and that's when the fun began. To get Vista's Aero Glass theme, you need a decent video card that has DX9 support. The GX400 has an AGP 4X port and a bank of PCI slots. No one is making AGP 4X cards anymore, it's AGP 8X or PCI-Express these days. I looked up the specs on a BFG card that claimed to be AGP 8X/4X, so I fired off an emaill to them to see if their card would work with my ancient PC.

While I was waiting for a reply, I saw an article on The Inquirer about companies releasing Vista ready PCI cards. Diamond had released a PCI card based in ATI's Radeon 1300 chipset and it sounded like it would do the job. After a few days of no response from BFG, we ordered the Diamond card. Immediately placing the order, a reply came from BFG that said their card would work.

The Diamond card came in today and I tried installing it. I removed the Nvidia card from the AGP slot and put the Diamond card in a PCI slot. There are 5 PCI slots, all of them were available. The machine wouldn't recognize the card. I tried a number of things (telling the BIOS not to expect an AGP card, moving the Diamond card to another slot, putting both cards in. With both cards in, the machine would not recognize either card.

Either it's something flaky with the Diamond card, or more likely, it's Dell building a PC that only works with AGP cards. Past experience with Dell has led me to the conclusion that the card slots on a Dell motherboard are purely decorative. I decided to call Diamond technical sipport to rule out their card.

Almost immediately, I was connected to technical support person. I forgot his name, let's refer to him as "Stan". Stan was not very helpful. It was clear that he was reading from some sort of script and deviations from that script were verboten. I explained that the PC would not make it past POST when the Diamond card was installed. He asked what OS was installed. I said "Vista, but that's not important right now". He asked what driver was installed. I told him that Vista did not support the current card and was using the SVGA driver that comes with Vista.

He asked me to uninstall the SVGA driver. I asked why and he said that having the wrong driver was a common cause of video card problems. I declined to do so for the following reasons:

  • The problem occurs at boot time, video drivers are not loaded until the OS loads. My machine was nowhere near that point.
  • It's the standard VGA driver that comes with Vista. It's the driver that gets loaded when you uninstall a vendor video driver.
  • I doubt that Vista would let you uninstall it in the first place.
  • The Diamond card had to work with SVGA driver or you would be unable to install Diamond's driver.

Since I declined to uninstall the driver, Stan's demeanor and he basically said there was nothing more he would do. I thanked him for his time and hung up.

This card is being sent back and I doubt that I would ever buy another Diamond Multimedia product. The BFG card is on order, hopefully that will be a better experience.

Tuesday, March 20, 2007

Notes on installing Delphi 2007

I got the email yesterday from CodeGear. It was a link to download the newly released Delphi 2007. I will be getting the DVD from CodeGear as part of the Software Assurance that I have, but I wanted to try the new installer. This is their first release using installer technology from InstallAware. As it happens, I'm considering switching from Wise For Windows Installer (WFWI) to InstallAware, so it's a good oppourtunity to see their installer in action.

The installer is a minimal (4MB) installer. It grabs the bits that it needs from the Internet from the bits that it needs and the bits that you want. It took a while to download the installer. There were three options, HTTP, FTP, and Galileo. From my office, none of them worked. Once again, our SonicWall firewall has safely protected me from downloading stuff that I need. After a few attempts, I went to Plan B. That was my home PC. I remoted into that box, immediately downloaded the installer without any grief and copied the file back to my office PC.

Once I had the installer, I ran it on my Vista box. The Vista box is my backup PC and I just put Vista in it to test our apps under a hostile environment. The first thing installer did (after I answered "Continue" to the ever present UAC) was to announce that it needed the .NET 2.0 SDK and it was going out to get them. It transferred about 360MB or so of .NET parts and then installed them.

After about 30 minutes or so, I got the "Welcome to the InstallAware Wizard for RAD Studio Setup" page in the setup dialog. Which led to the EULA and registration pages. Oddly enough, it defaulted to "CodeGear" as the company name. Come on folks, that value can be read from the registry. The "Next" button flickered as I typed into each field. I don't know that that's Vista, Windows Installer, or InstallAware. I'm guessing it's Vista's non-support for my ancient NVIDIA TNT2 card that it treats as a standard VGA device.

Then I was prompted for what features to install. I have the Enterprise version, there were many features. It wanted about 1GB and called itself "CodeGear RAD Studio". After one more confirmation prompt, the installer went back to the mothership to download the bits it needed.

It was done after 90 minutes. Now comes the fun part. How many of the Delphi 2006 components will work as advertised?