Replacing Task Manager with Process Explorer on Windows 7 64bit
I’ve happily used Process Explorer for several years using the replace task manager function whenever I can. When I moved to the 64 bit version of Windows 7, the functionality to replace the task manager began failing. It would appear to work; however, when invoking task manager by right clicking on the start bar I would always see the error that it could not find taskman.exe.
Today I learned that the method used for replacing task manager is called Image File Execution Options. Basically, via an entry in the registry, calls for the execution for one program are substituted with a call to another. When you use the “Replace” functionality within Process Explorer, it creates the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe
That key has this value:
Debugger: "C:\SYSINTERNALS\PROCEXP64.EXE"
The problem arises due to the way Process Explorer works on 64 bit systems. When you run PROCEXP.EXE, it creates the 64 bit stub PROCEXP64.EXE as a temporary file. While I admit to not understanding fully why it does this, the issue that causes the problem is that Process Explorer also deletes that file when it exits, so the substitution will not work. The error message is a bit misleading, but it at least makes sense now.
Simply replacing the value of the Debugger key with PROCEXP.EXE instead of PROCEXP64.EXE fixes the issue.
NOTE: As always, messing with the registry should be done at your own risk and may cause problems with your system.
Thorn’s Law
This was quipped by someone I know. I wanted to make sure to record it for posterity.
The longer you are is in the bathroom, the faster others rush in when you’re done. That’s actually the time you want to allow some time…and distance!
I suppose it all depends on the HAZMAT level of the room afterwards.
Using an External Config File With log4net with ASP.NET 2.0 and IIS7
I started a new project recently and set about adding log4net to it. I’d upgraded to a new Window 7 workstation over the past month whereas I’d previously been using XP, so the step up to IIS7 was exciting and and a bit anxious all at the same time. My first hurdle so far has been using log4net.
I tend to be the type of person that likes to separate out the log4net configuration into it’s own file, usually log4net.config. Setting up this new project; however, I started running into a problem I’d never seen before. When trying to use the XmlConfiguratior to read my log4net.config, I would see this exception:
[SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
Searching for others with this problem has not yielded much success. I’ve seen articles stating that it’s an issue with medium trust security (on m local workstation trust was set to full) to problems with some sort of breaking code within log4net itself. Most of these articles I suspect were not using IIS7, but it was hard to tell.
I ended up digging into the log4net source code to find out what was happening. The problem would occur on a line of code that tried to access the FullName property of a System.IO.FileInfo object. That property threw the exception worked fine it I tried to access it from my web project, but once it got down into the log4net guts, it would not.
After a lot of frustration, I finally started looking elsewhere. I ran across a comment on Stack Overflow that stated they used .xml instead of .config files. I had dismissed it due since others claimed .config files where fine, but recalling what I’d seen there I decided to try it. *Poof* it worked!
I didn’t really want to leave the configuration in a file with the .xml extension since that could easily be downloaded from a server. The discovery told me that it was likely due to something IIS was doing with ASP.NET to hide files, but the odd thing was that it could read from the web.config, so I was a little perplexed. I started digging into how IIS7 handles these types of protected files.
It turns out that there’s a section in the hosting configuration that lists protected files under the name “requestFiltering”. Hmm…that was an interesting sounding name. Unfortunately all the entries were only by file extension, not by file name directly so there had to be something else.
I ended up in the IIS7 Manager application and found the Request Filtering area. I began to poke around in there and discovered another tab called Hidden Segments which had an entry for the web.config! I clicked the Add Hidden Segment link under Actions and added a new entry for log4net.config and viola, my application worked!
I know that most of the IIS7 configuration settings are stored in various config files, including the web.config, so I started looking in there and found this new element in the <system.webServer> section.
1: <security>
2: <requestFiltering>
3: <hiddenSegments>
4: <add segment="log4net.config" />
5: </hiddenSegments>
6: </requestFiltering>
7: </security>
I believe that including this section will allow the files to work. I even changed my trust level in my dev environment to Medium and it still ran just fine.
There may be other things that can cause this sort of problem, but this fixed my example. Hopefully this helps someone else out there as it was a bear to track down!
What’s So Hard About Managing Podcasts?
<rant>What is the big deal with podcasts? I’ve tried many different podcast client software and all have had one problem that seems to remain the same. At times, they will suddenly start downloading old podcasts that have already been listened to. Argh! Some podcasts (like my local news, the Bend Bulletin) have archives going back or over 2 years that I then must go delete in order to clean up the massive amount of space they’re using again!</rant>
Ok, now that I’ve got that out of my system, the real question is, where does the fault lie? Is it with the software itself, or is it the content provider? Do the content owners change something that causes all of the items to look “new” or does the software simply fail at some point to recognize that the episodes are old?
I’ve tried Miro, Zune, Juice and HappyFish among others and they all seem to have the same occasional (once a week or so) problem. If anybody has a better suggestion, I”d be happy to try it!
The one thing that I like to do, which may be different that most users (although I don’t think it’s so unusual) is to save some of the episodes. For example, I subscribe to some guitar podcasts and many of the lessons I like to keep. Maybe that’s messing them up? It shouldn’t, but man it is annoying!
How I fixed Visual Studio crashing when opening XAML (WPF) files
For the second time, Visual Studio 2008 began crashing when double clicking on a XAML file. In this case, the crash was spectacularly underwhelming. No error message, blue screen or other indication of something horrible happing. Visual Studio would simply go a way, or “blink out” as I’ve seen it referred to.
After much searching I was able to determine that the PowerCommands for Visual Studio 2008 extension was somehow involved in the problem. I tried quite a few different solutions including adding a dependantAssembly reference in my Visual Studio configuration, doing a clean solution then rebuilding the project. Up to that point the only thing that worked was uninstalling the extension. Reinstalling afterwards would cause the problem to return.
Working without PowerCommands was an option I did not want to consider. Many times each day I would use functions such as “Open Command Prompt” which fires up cmd.exe starting in the directory of the file or folder selected in the solution explorer or “Open Containing Folder” on a file, just to mention a couple. It was looking like that was going to be the only solution, I was bummed.
I decided to check with the source a bit further. I looked through their issue list and the top voted issue was VS 2008 crashes when adjusting toolbox items. Reading the description did not give me a lot of hope as it dealt with a problem when the toolbox items were adjusted. It also included an actual error which was lacking in my case.
Among the comments to the above issue, I found the suggestion to run the command “ngen /delete *” (without the quotes) from a Visual Studio 2008 command prompt. Ngen is the native image generator which creates native images from managed assemblies and installs a native image cache on a computer, which is a reserved area of the global assembly cache.
Wow, that sounds important, and I’m suppose to delete * (star)? Ok….I was desperate and I did it before investigating what it meant. Dangerous, I know, I know, but as I said I was desperate!
It worked. Nothing seemed to break…and it worked. Ok, off we go! Wait, time to investigate….just in case problems start cropping up later.
Running ngen /? from the command prompt yielded no information, not a mention of the /delete switch. In my experience, when a command line utility fails to mention an argument that clearly did something, this is an argument that should only be used with full knowledge of what it does. Now I started to get nervous!
I did a quick Google Search and was lead to the MSDN documentation for ngen. It seems that my little command deleted all native images in the native image cache. Hmm….that sounds bad. Fortunately, a little further down the page the following information was also present.
This made me feel a little better. The assemblies were still there, simply not the native images for them. Native images simply cause the applications or assemblies to start up a bit faster. With today’s hardware, I don’t know that I’ll even notice a difference, or if I do, it will be worth it to keep PowerCommands and get rid of the problem.
If this behavior resurfaces, I will do a little more investigation by using the /show argument to find out what native images are installed. Then I will started deleting them one at a time to find the culprit. My guess is that one of the native images somehow became corrupted, or the configuration for it got messed up or something like that. Perhaps finding the culprit will aid in the resolution of the issue that this wonderful extension is experiencing by, if the Google results are any indication, a fair number of developers.
Essential Android Apps, 3 Months Later
Almost 3 months ago, I wrote about the Android applications that I found myself coming depend on. With the release of paid applications on the Android Market, the quality of products has been rising and I’ve found that I’ve adjusted my must have list a little.
Apps I still use
Exchange by TouchDown
I still love this for my corporate Exchange access. NitroDesk is doing a great job of adding new features and fixing bugs when they crop up. In January I was still using version 1. Since then, they’ve come out with v 2.0 which including, among many other things, push support. Currently I am beta testing a new version which I am uncertain whether or not I can talk specifically about, just suffice it to say the new big-ticket item is very nice.
The NitroDesk support continues to be superior with most responses coming within a few hours at the most. These guys simply get it. I have checked out a couple of other Exchange clients and they just don’t come close.
The Weather Channel
Not much to say about this one. They have had a few updates, but nothing new and exciting, still the app simply works and it works well. Sometimes, if it aint broke, you don’t fix it.
Quickpedia
I find myself struggling to remember details about topics that crop in conversations all of the time. Quickpedia gives me what I consider to be the best mobile UI wrapper around the content from Wikipedia available. Whether I’m looking up the discography for a band, or reading up on the science behind natural harmonics on your guitar, the information is formatted to look good on a mobile device including grouping the information by section allowing you to see a quick overview of the the types of information available.
Rings Extended
In my previous post, this was an honorable mention. I suppose that was due to the fact that you almost never see this application. The truth; however, is that you always use it. It replaces the standard ringtone picker application allowing you to customize rings by using built-in tones or sounds, music or tracks on your SD card.
New Additions
Steel
The built in web browser is very nice; however there are a few features that it simply doesn’t have yet. While the next version of Android (1.5, cupcake, whatever) may address them, Steel fills the gap in the interim. Steel gives you full screen browsing, auto rotation when you turn your phone sideways, touch zooming, flip navigation between windows and a soft (on-screen) keyboard.
Steel uses the base Webkit engine that the built in browser uses, it simply adds a UI on top of it that should have been included in the first place.
SplashID
The folks at Splash Data have been making password management that syncs desktop with mobile for a while now. They have versions for most popular mobile platforms including Android, WinMo, iPhone, Palm, Blackberry and Symbian Series 60. For years I’ve enjoyed having my passwords stored in a secure environment on my desktop and my mobile device (formerly on WinMo) and now that SplashID has an Android client, I’m once again feeling safe
Useful Switchers
This is a quick-toggle application for many of the frequently used system settings. It allows you with a click to toggle WiFi, Bluetooth, Auto Sync, GPS and more. This little app is fast, and has a great looking, simple to understand interface.
Gone Missing
These are applications that were on my original list but have since lost their place in my my device for various reasons.
aTrackDog
This was the only way to really keep apps up to date without manually searching them out. It was a great app, but since RC33 was released with the automatic updates listed in the market, my downloads section, it became redundant.
I see now that they have added some features to make it appealing again, including updates to non-market applications and a few other features. I may give this another try, but for the moment it’s not on my device.
This app was designed really well. It gives quick access to some of the settings that affect your battery life, such as WiFi, GPS and brightness. A very nice features is the automatic triggers which will change settings to a certain profile. For example, if your battery gets down below 30%, it may turn off GPS and WiFi.
Why did I get rid of it? 3 reasons:
- The main reason is that the developer changed it to a 3 day trial which you could upgrade to the full version. He did this without adequate warning (I simply updated since my marketplace told me one was available) and did not leave the original free version available. While it is only $0.99, and I would have likely paid for it, the manner in which it was done did not sit well with me.
- All of the quick settings toggles (and many more) are now available from Useful Switchers.
- I rarely let my phone get below the 30% threshold that I had set for turning off WiFi.
While it sounds like he may have made the free version available on his website (instead of the market place)
Conclusion
This is not an exhaustive list of the applications I have installed and use, but they are the apps that, if I had to do a hard reset, I’d likely install right away. That says a lot about them regarding their usefulness and the way the work their way into your day-to-day routine.
If you have some that you think are essential, questions about any of these apps or criticism about some of my choices (please back it up!) please leave a comment!
Blogging (and micro-blogging) Hiatus
I have been on a bit of a lapse in the blogging, twitter, 12 seconds and other social network arenas. Robert Scoble once posted The Corporate Weblog Manifesto. Rule #13 states
If your life is in turmoil and/or you’re unhappy, don’t write.
He gives a brief, non-specific example of the potential effects. My family has been going through some rough times lately that I will not get into in this forum, but suffice it to say that the stress level has been high and, though I have wanted to share my thoughts on several things of late, I did not want to fall victim to subconscious changes to my writing affecting the quality.
After almost 2 months, we are coming to terms with the changes in our lives at home and, while things are still far from what most people consider normal, we are at least coping.
I have to admit that not blogging during the break was somewhat of a relief but now I must deal with the consequences of my blog’s loss of relevance, but more importantly, it’s time to get back into something I enjoy, writing!