Posted by Sinking on 02/07/2010
I carried out a physical-to-virtual (p2v) conversion of a Windows 2003 Server SP1 to a Hyper-V virtual machine using the Sysinternals Disk2VHD tool (download from http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx), installed the Integration Services pack, rebooted and got a blue screen of death. Rebooted again, BSOD again, with an error code of:
0x0000007B INACCESSIBLE_BOOT_DEVICE
Here’s how to fix:
- Reboot the virtual machine and press F8 to get into the recovery options and choose ‘Last known good’. This is one of the rare times that this option does any good!
- The server should boot into Windows but without the Integration Services pack working.
- Go into Add / Remove Programs and uninstall Integration Services. Reboot. It should reboot without crashing now.
- Back in Windows, run regedit, and find the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Wdf01000
- The value of this will probably be set to base… Change it to WdfLoadGroup
- Reboot. Reinstall Integration Services. Reboot. Should all be working.
Thanks to Robert Vierthaler for finding this here:
http://blogs.msdn.com/b/robertvi/archive/2009/10/07/after-installing-hyper-v-integration-services-on-the-next-reboot-the-vm-displays-bsod-0x0000007b.aspx
Posted by Sinking on 13/04/2010
I had a problem on a site where the users weren’t always picking up their home directory drive mappings from Active Directory, usually when connecting to terminal servers or virtual workstations.
This isn’t a fix for that issue but it is a workaround that may prove useful elsewhere. This vbscript will detect the missing drive mapping (I’ve used H:) and map it using the home directory path set for the user in Active Directory.
Copy it into notepad, save it as a .vbs file, add it as a logon script. Job done.
'This script will manually add a users home drive mapping as H: if it isn't mapped by active directory at login.
'Save it as something.vbs and add it to your logon scripts.
'It also writes a logfile out to c:\script_log.txt with the results.
'Shared on www.sinkingducks.com.
Option Explicit
On error resume next
'Declarations
'oz = objects
'sz = strings
'az = arrays
'iz = integers
'bz = Booleans
'rs = Recordsets
'fz = Functions
Dim ozNetwork, ozUser, ozFileSysObj
Dim ozCurrentUser
Dim szUserName, szComputerName, szHomeDirectory
'Create objects
Set ozNetwork = CreateObject("WScript.Network")
Set ozUser = CreateObject("ADSystemInfo")
Set ozFileSysObj = CreateObject("Scripting.FileSystemObject")
'Get user name
szUserName = uCase(ozNetwork.UserName)
'Get home directory path
Set ozCurrentUser = GetObject("LDAP://" & ozUser.UserName)
szHomeDirectory = ozCurrentUser.Get("homeDirectory")
'Map H: if it doesn't exist
If not ozFileSysObj.FolderExists("H:\") then MapNetworkDrive "H:", szHomeDirectory, "", ""
'---------------------------------------------------------------------------------------------
'Functions
Function MapNetworkDrive(szDriveLetter,szNetworkPath, szNewUser, szPassword)
'Map network drive
On Error Resume Next
Dim bzUpdateProfile
bzUpdateProfile = "False"
WriteLog "Mapping drive " & szDriveLetter
If szNewUser = "" or szPassword = "" Then
ozNetwork.MapNetworkDrive szDriveLetter, szNetworkPath, bzUpdateProfile
Else
ozNetwork.MapNetworkDrive szDriveLetter, szNetworkPath, bzUpdateProfile, szNewUser, szPassword
End If
If Err.Number <> 0 then
WriteLog Err.Description
Else
WriteLog "Drive " & szDriveLetter & " was mapped"
End If
End Function
Function WriteLog(szMessage)
'Write messages out to log file
On Error Resume Next
Dim szNow, szTempFolder,szFilename
Dim ozHistory
szNow = CStr(Now)
szTempFolder=mid(ozShell.ExpandEnvironmentStrings("%temp%"),3)
szFilename = "c:" & szTempFolder & "\script_log.txt"
ozBrowser.document.all.szlog.Value = szMessage & vbCrLf & ozBrowser.document.all.szlog.Value
Set ozHistory = ozFileSysObj.OpenTextFile(szFileName, 8, True)
ozHistory.WriteLine(szNow & ":" & szComputerName & ":" & szUserName & ":" & szMessage)
ozHistory.Close
err.description = ""
err.Number = 0
End Function
'---------------------------------------------------------------------------------------------
Posted by Sinking on 06/04/2010
Here’s a quick fix for a particular issue I have encountered a few times with Microsoft Exchange 2007. I’m mainly posting this so I don’t forget it myself!
The problem is as follows…
Exchange 2007 stops receiving email and the following event is logged in the Application event log:
Log Name: Application
Source: MSExchangeTransport
Date: 4/6/2010 9:37:30 AM
Event ID: 15006
Task Category: ResourceManager
Level: Error
Keywords: Classic
User: N/A
Computer: computername.domain.com
Description:
The Microsoft Exchange Transport service is rejecting message submissions because the available disk space has dropped below the configured threshold.
Resource utilization of the following resources exceed the normal level:
Queue database logging disk space ("C:\Program Files\Microsoft\Exchange Server\TransportRoles\data\Queue\") = 97% [Medium] [Normal=95% Medium=97% High=99%]
Back pressure caused the following components to be disabled:
Inbound mail submission from the Internet
Mail submission from the Pickup directory
Mail submission from the Replay directory
This error indicates that the drive that the Exchange 2007 message queue is installed on is running low on space, although because the thresholds are calculated as percentages the available space may not appear to be that low!
There are two possible fixes:
- Delete some stuff to free up space.
- Move the queue to an alternative location. To do this, edit the EdgeTransport.exe.CONFIG file, which can be found in the Exchange Bin folder. If your Exchange is installed with all the default options this will probably be in C:\Program Files\Microsoft\Exchange Server\Bin. Find and change the following lines:
<add key="QueueDatabasePath" value="C:\Program Files\Microsoft\Exchange Server\TransportRoles\data\Queue" />
<add key="QueueDatabaseLoggingPath" value="C:\Program Files\Microsoft\Exchange Server\TransportRoles\data\Queue" />
Amend the paths in these two lines to the desired new location on another drive with more free space, so you may end up with something like:
<add key="QueueDatabasePath" value="D:\ExchangeQueue" />
<add key="QueueDatabaseLoggingPath" value="D:\ExchangeQueue" />
Create the folder that you are redirecting the queue to, restart the Microsoft Exchange Transport service, job done!
Posted by Sinking on 16/03/2010
So I’ve just been asked to find a way to monitor Windows Scheduled Tasks and send alert emails if are failing. I found most of the solution in this forum post: http://forums.techarena.in/server-scripting/972774.htm and set about making it work with Blat, the Win32 command line email utility, as suggested in the post.
To use, download and install Blat on the PC or server to be monitored. Copy / paste the code below into notepad and save it as a .bat or .cmd somewhere sensible. Amend the variables as instructed in the code. Schedule the script to run after all the other scheduled tasks should have finished. Job done!
@echo off
REM This script checks the Last Result code of every Scheduled Task on Windows XP or 2003 Server.
REM If the code isn't 0x0 it emails a warning using Blat from http://www.blat.net.
REM The script has been adapted from a post I found on Techarena here: http://forums.techarena.in/server-scripting/972774.htm
REM Install Blat from the above website onto the PC or server to be monitored.
REM Save this script on the machine in c:\scripts as a .bat or .cmd file.
REM Amend YourEmailAddress@Domain.com, smtp.domain.com, c:\pathtoscript and @domain.com to suit your situation.
REM Schedule the script to run after all the other Scheduled Tasks have finished.
REM Change the values after the equals sign (=) below to you email address, SMTP server and the path to the script.
set YourEmailAddress=YourEmailAddress@Domain.com
set SMTPServer=smtp.domain.com
set PathToScript=c:\pathtoscript
REM Change the value of @domain.com below to be your email domain.
set FromAddress=%computername%@domain.com
REM Stop making changes now!
for /F "delims=" %%a in ('schtasks /query /v /fo:list ^| findstr /i "Taskname Result"') do call :Sub %%a
goto :eof
:Sub
set Line=%*
set BOL=%Line:~0,4%
set MOL=%Line:~38%
if /i %BOL%==Task (
set name=%MOL%
goto :eof
)
set result=%MOL%
echo Task Name=%name%, Task Result=%result%
if not %result%==0 (
echo Task %name% failed with result %result% >c:\scripts\taskcheckerlog.txt
blat %PathToScript%\taskcheckerlog.txt -to %YourEmailAddress% -subject "Warning! Failed Scheduled Task on %computername%" -serverSMTP %SMTPServer% -f %FromAddress%
)
Posted by Sinking on 24/02/2010
So I wasted a good couple hours of my life today trying to get .NET 3.5 SP1 installed on a Windows 2003 Server. It failed at every attempt, whether from a download or from windowsupdate. In the end, the fix was fairly simple (in a rip-it-all-out-and-start-over kinda way!)
- Download the .NET Framework cleanup tool from Aaron Stebner’s blog: http://blogs.msdn.com/astebner/archive/2006/05/30/611355.aspx
- Uninstall all existing versions of .NET Framework.
- Run Aaron Stebner’s .NET Framework cleanup tool and reboot.
- Install .NET Framework Version 1.1.
- Install .NET Framework Version 2.0.
- Reboot.
- Install .NET Framework 3.5 Service Pack 1.
This clearly has scope to break many other things. And that clearly won’t be my fault!
Posted by Sinking on 11/01/2010

My David Cameron
Thanks to http://www.mydavidcameron.com for the template!
Posted by Sinking on 29/03/2009
More specifically, I’ve been wondering what we taste like.
The cliche of course is that we taste like chicken. Fans of Eddie Izzard will take this as

An actual cannibal yesterday
read. But here’s my problem: Corn fed? Free range? Raised cruelly by fascists? Not all chickens taste alike. So do all people?
Suppose, as an experiment, I spend a year feasting on nothing but ginger and garlic, and you stick religiously to salad and corn. At the end of the year we invite Armin Meiwes to consume us both, would we taste the same?
I suppose what I’m wondering is, can you marinade a person from the inside?
Armin, incidently, suggested Pork as the closest flavour to us, slightly stronger and a bit more bitter. Journalist William Buehler Seabrook, who ate part of a ‘recently killed, but not murdered’ man thought it was more like ‘good, fully developed veal.’
So there you have it. Chicken, pork and veal. There might be something in my rather disturbing thought after all! Not that that’s much consolation to me. I’d like to stop thinking about it soon so hopefully sharing it with you all will make it go away…
One last thing, does eating a vegan count?
Posted by Sinking on 18/03/2009
The thing is, I want to like Twitter. I really do. I mostly like Facebook now but it took a while. There’s scope for comedy on FB, and that’s all anybody ever needs, isn’t it? I mostly liked MySpace too, but that had to go when FB came into favour to overcome the panic attacks. Trying to be funny, interesting and on-scene on two separate sites on which I was friends with all the same people? Not even possible for the habitually nervous.
And so now I’m on Twitter, and I’m still not sure why. And I can feel the panic rising once again. It’s quick, for one thing. Some people seem to do nothing but tweet. How is that even possible? Just look at the likes of the Queen Tweeter, Stephen Fry, or the Carr twins, or Wossy! A post appears from one of them roughly every 2 minutes, which is becoming a real problem now that I have twitberry installed. And who’s making all the TV shows now? That’s what I want to know.
And so now I have two sites to keep up-to-date again, and apparently it’s poor social etiquette to post the same thing on two sites, and so I have to double my comedy output to compete or ditch one (they do, after all, have all the same people on them all over again!).
The panic is rising.
And I know I don’t ‘have’ to be on any of them.
Do I?
But… if I’m not on them, how will I know?