Category: Featured

Having worked in the software support industry for many years, and now even as a software developer, I’ve lost count of the number of times that Mark Russinovich’s Sysinternals tools have helped me solve seemingly impossible problems. From simple application crashes, to complex file security issues – there has always been a tool in the Sysinternals suite that has at least pointed me in the right direction to solving the problem.

Each tool in the suite has a specific purpose with a plethora of features. My favourites in the suite are:

Process Explorer

Process ExplorerProcess Explorer is a fantastic tool for tracking down DLL-version problems or handle leaks, and provide insight into the way Windows and applications work.

I find Process Explorer extremely useful for tracking down hung processes that are causing excessive CPU usage and malicious process (Malware/Adware). It will even let you drill down in to specific threads of a process that is causing problems.

A few clicks in Process Explorer can sometimes solve the most annoying problems in a simple way.

Autoruns

AutorunsAnother great tool for getting rid of pesky malicious applications that run on start-up. Also excellent at discovering process of applications that may not have uninstalled correctly.

Autoruns has the most comprehensive knowledge of auto-starting locations of any startup monitor, shows you what programs are configured to run during system bootup or login, and shows you the entries in the order Windows processes them.

Process Monitor

Process MonitorProcess Monitor is an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity.

For those more complex issues that deal with things like file/registry permissions, or missing assembly files (and many, many other file or registry related problems).

This tool is definitely the most useful in the suite for investigating unexplainable behaviour.

If you’ve never heard of Sysinternals (Process Explorer, Autoruns, Process Monitor), I highly suggest you take a look at the Sysinternals Technet page.

For an in-depth overview on how you can use these tools to assist you in investigating and troubleshooting unexplainable behaviour with Windows or third party software running on Windows, I would recommend watching the video after the break of one of Mark’s TechEd sessions.

Read More »

Now that Open Media Library is coming closer and closer to a functional application people are starting to ask “Where can I download this from!?”, the answer – Because it’s open source you can download the source and compile and use at your discretion. “Source? Compile? What?” Are just some of the questions people are left with when told to do that. So here goes some step by step instructions on what you need to do to get Open Media Library up and running on Vista Media Center.

First things first – you will need the following applications:

I’m not going to go into how to install them, but i’m sure you can figure that out for yourself.

Create a new folder where you would like to store the source for Open Media Library (you can delete this later if you want).

Right click on the folder, highlight TortoiseSVN and then click Checkout...

TortoiseSVN Checkout Dialog

The TortoiseSVN prompt will then ask for the URL of the repository (which you can find out at http://code.google.com/p/open-media-library/source/checkout), put in http://open-media-library.googlecode.com/svn/trunk/ and then click OK.

TortoiseSVN will then download the latest revision of the source and prompt you once it has been completed.

TortoiseSVN Completed Dialog

Now browse to the directory where you saved the source to and double click on OML.sln to open the Open Media Library solution in Visual C# Express. While the solution is opening you may be prompted with a few errors stating that Solution folders are not supported in this version of Visual Studio, just click OK and ignore these.

Usually you could then just click on Build -> Build Solution (or press F6), however due to constant changes to the repository you may get errors and a failed build. To avoid this you can build the OMLEngine and Library projects individually by right clicking on OMLEngine in the Solution Explorer (on the right), click Build and then do the same thing for Library.

Visual Studio Build

Next step is to register the application. This step is likely to cause most people problems depending on whether they’re using Vista 64bit or 32bit.

To note: OMLEngine.dll will register itself when it’s built in Visual Studio.

To register the application with MediaCenter first open up a command prompt and cd to the directory where you saved the source and then cd to \Library.

Type DevInstall.cmd /debug and then press enter. You should get an output much like this:

DevInstall

Provided all has gone well, if you open up Media Center you should be greeted with the Open Media Library menu strip icon.

Vista MediaCenter

Next up, importing your Movies.

I recently purchased an ANTEC Fusion home theatre PC enclosure to replace my old noisey media center PC only to discover that the included IR functionality was complete rubbish (you can’t even use the PC on/off button on an MCE remote without connecting an additional cable). Initially this didn’t phase me as I already had a MCE IR reciever, however – after much searching I realised there was no way to disable the included IR functionality without also disabling the VFD (which works beautifully with Vista Media Center after a bit of configuration).

After a bit of googling it appeared there were 3 solutions:

  1. The easiest, use another application to utilize the VFD (e.g. LCD Smartie)
  2. ANTEC’s suggestion, Remove the front panel of the case, unscrew the VFD module and then cover up the IR receiver module.
  3. or, disable the VFD all together.

The first solution sounded ok, but I could not find a single application that would work with Vista Media Center. Either the applications didn’t work at all, or they just didnt support Media Center. Second solution, huh!? Sounds a bit ghetto – surely there’s got to be something better than that. Third solution, well yeah – defeats the purpose of the VFD in the enclosure.

Out comes PE Explorer and WinDbg, time to write a dummy SG_RC.dll to trick the ANTEC software into thinking the RC was working when infact the requests just get ignored. Before I did that I thought I’d check out the file structure of the ANTEC application and see if there was a hidden setting to disable the IR module.

HKEY_CURRENT_USER\Software\ANTEC\VFD\RCPlugin

Set it to 0, the remote stopped working! But the VFD would then only display the time. No good.

Vista:
%USERPROFILE%\AppData\Roaming\ANTEC\VFD\Setup\MCE remote\

XP (can anybody confirm this is correct?):
%USERPROFILE%\Application Data\ANTEC\VFD\Setup\MCE remote\

This folder appears to contain configuration/key mapping data for the MCE remote. So the simple solution?

  1. Set all permissions to Deny for Everyone on the MCE remote folder.
  2. Restart the ANTEC software.
  3. Plug in your MCE IR Receiver.
  4. Problem Solved!

Stay tuned for a replacement for the ANTEC software, that fully supports Vista Media Center right out of the box :)

Update: Another solution of disabling the driver from device manager has been suggested. I found that this had the same result as setting the RCPlugin registry value to 0. The ANTEC VFD software says that the VFD H/W is not connected and will not display anything on the VFD. Doing this will however disable the IR functionality.

Update: You can now use the iMon software to control the VFD/IR Sensor in the Antec case. The latest version of the iMon software has an option to disable the IR Sensor all together.

Recently I was given the task of creating some custom Web Parts for a newly implemented Microsoft Sharepoint 2007 site. Not knowing anything much about Sharepoint, the first step was to figure out how to create a basic Web Part and then figuring out how to publish it for use.

Web Parts in SharePoint 2007 are based on the ASP.NET 2.0 Framework so you can use your choice of .NET languages to create your custom Web Parts. My .NET language of choice is C#, so i’ll be using that for this example.

The first thing you need to do is create a new Class Library project in Visual Studio 2005. Once created, add a reference for System.Web as it contains the Web Part controls. You then need to add an override for Render() and for testing use Write to output some text eg. writter.Write(“Hello Trent!”); - See the below code for an example:

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls.WebParts;

namespace SampleWebPart
{
  public class SampleWebPart : WebPart
  {
    protected override void Render(
      System.Web.UI.HtmlTextWriter writer)
    {
      writer.Write("Hello Trent!");
    }
  }
}

Before building the Web Part the assembly needs to be strongly named, you can do this in Visual Studio by opening the project properties and then going to the Signing tab. Tick on the Sign the assembly check box and then click on the drop down list and select New. Give the key a name and choose a strong password. Click Ok and you’re done. Additionaly you will need to open AssemblyInfo.cs and add [assembly: AllowPartiallyTrustedCallers()] on a new line. You can now build the Web Part assembly.

There are 2 ways that I found to deploy the Web Part assembly, Global Assembly Cache (GAC) or bin – I first tried using the GAC as it was the recommended way but was unsuccessful. Using the bin method worked without a hitch, so I will explain that method.

First copy your compiled assembly to the _app_bin directory (You’ll find it in your SharePoint installation directory – In my case it was at C:\Inetpub\intranet\_app_bin\).

For the next step you’ll need to get the Public Key Token for your assembly, see Strong Name Tool (Sn.exe).

Open the web.config file found in the SharePoint installation folder and add the following line to the SafeControls section (You’ll need to replace the PublicKeyToken with the Public Key Token of your assembly):

<SafeControl Assembly="SampleWebPart, Version=1.0.0.0, 
  Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx"
  Namespace="SampleWebPart" TypeName="*" Safe="True" />

Now open your SharePoint site, go to Site Actions, Site Settings, and select Web Parts (It’s underneath Galleries). Click on New, put a tick next to your Web Part in the list and the click on Populate Gallery.

You can now add your custom Web Part to any of the pages in your SharePoint site.