DFS namespace query tool

Posted on July 29th, 2009 in Server 2003, Server 2008, Storage by alt-92

For quick lookups to find out where DFS links are pointing to, I’ve built dfsquery.exe in C++.
standalone executable, 64bits support and works on NT5.1 and up (including Windows 7).

Based on MSDN code sample from http://msdn.microsoft.com/en-us/library/bb524791(VS.85).aspx

01
02
#define UNICODE
03
#include <stdio.h>
04
#include <windows.h>
05
#include <lm.h>
06
#include <lmdfs.h>
07
 
08
void wmain(int argc, wchar_t *argv[ ])
09
{
10
   PDFS_INFO_4 pData;
11
   PDFS_STORAGE_INFO ps;
12
   DWORD er=0, tr=0, res, j;
13
 
14
   //
15
   // Check command line arguments.
16
   //
17
   if (argc<2)
18
      wprintf(L"Syntax: %s DfsEntryPath\n", argv[0]);
19
   else
20
   {
21
      //
22
      // Call the NetDfsGetInfo function, specifying level 4.
23
      //
24
      res = NetDfsGetInfo(argv[1], NULL, NULL,  4, (LPBYTE *) &pData);
25
      //
26
      // If the call succeeds, print the data.
27
      //
28
      if(res==0)
29
      {
30
 printf("Report for: %-30S\nStorages: %u\nComment: %S\n",pData->EntryPath, pData->NumberOfStorages, pData->Comment, pData->Timeout);
31
 printf("Timeout: %u\n",pData->Timeout);
32
 ps = pData->Storage;
33
         //
34
         // Loop through each target.
35
         //
36
         for(j=1;j<=pData->NumberOfStorages;j++)
37
         {
38
            //
39
            // Print the status (Offline/Online) and the name 
40
            // of each target referenced by the DFS link.
41
            //
42
 printf("Target %S  ", (ps->State == DFS_STORAGE_STATE_OFFLINE) ? TEXT("Offline:"): TEXT("Online :"));
43
            printf("\\\\%S\\%S\n",ps->ServerName,ps->ShareName);
44
            ps++;
45
         }
46
         //
47
         // Free the allocated memory.
48
         //
49
         NetApiBufferFree(pData);
50
      }
51
      else
52
         printf("Error: %u\n", res);
53
   }
54
   return;
55
}
56

It’s quick, it’s probably dirty, but it works just fine (and no admin privileges needed as it does the same as your average DFS client code).

Sample output:

D:\>dfsquery \\alt-92.net\files\0054
Report for: \\ALT-92\files\0054
Storages: 2
Comment:Department 54 data store
Timeout: 300
Target Online : \\ENDEAVOUR\data\0054
Target Offline: \\Equinoxe\data\0054

It shows timeout value, comments (description field in DFS console) the number of link targets and their individual link state.

IIS 6.0 running PHP 5.2.10 / FastCGI on Windows 2003 R2

Posted on July 13th, 2009 in Server 2003 by alt-92

This server is now running PHP 5.2.10 using FastCGI.

FastCGI is a high-performance alternative to the Common Gateway Interface (CGI), a standard way of interfacing external applications such as PHP with Web servers.
Compared to the ISAPI PHP module, PHP and FastCGI are much faster and definitely the way to go.

FastCGI is available from IIS.NET ( http://www.iis.net/downloads/default.aspx?tabid=34&i=1521&g=6 ) and takes very little configuration. A good installation instruction is at http://learn.iis.net/page.aspx/247/using-fastcgi-to-host-php-applications-on-iis-60/ including a manual setup.
As always, you’ll need to properly secure the application directories and don’t forget to tweak the php.ini settings file as well.
I prefer to do a manual PHP setup in a custom path. That way, all the binaries and extensions are in a self-contained environment which allows for easy version upgrading, switching between versions or running differrent versions side by side for compatibility reasons.

phpversioning

Mounting VHD files in Vista

Posted on July 9th, 2009 in Server 2003, Server 2008, Storage, Virtualisation, Vista, Windows 7 by alt-92

Windows 7 features include attaching and detaching Virtual Harddrive files (.VHD) via Disk Management.
This allows you to mount and dismount your Complete PC Backup .vhd file to restore a single item from backup or prestage a Virtual PC/Server diskfile, or even your HyperV disks.

Vista does not have this feature, but there is a workaround available. Installing the VHDMount utility from Virtual Server 2005R2 SP1 lets you use the VHD storage driver and the vhdmount utility.

  1. Download the Virtual Server 2005 R2 SP1 setup from http://www.microsoft.com/windowsserversystem/virtualserver/downloads.aspx .
  2. Run setup and choose Custom Setup type:

    vhdmount1
    vhdmount2

  3. Verify the default selection for VHD Mount is marked:

    vhdmount3

    Click Next to install and finish the setup.

    vhdmount4

  4. You can use the command line vhdmount utility to attach a .VHD file, or alternatively, use these registry entries to create a context menu for the four actions.

    01
    Windows Registry Editor Version 5.00
    02
     
    03
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD]
    04
    @="Virtual Machine Hard Drive Image"
    05
     
    06
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\DefaultIcon]
    07
    @="C:\\Program Files\\Microsoft Virtual PC\\Virtual PC.exe,-327"
    08
     
    09
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell]
    10
    @="Mount"
    11
     
    12
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Commit]
    13
     
    14
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Commit\command]
    15
    @="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /c \"%1\""
    16
     
    17
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Discard]
    18
     
    19
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Discard\command]
    20
    @="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /d \"%1\""
    21
     
    22
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount]
    23
     
    24
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Dismount\command]
    25
    @="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /u /d \"%1\""
    26
     
    27
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Mount]
    28
     
    29
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Virtual.Machine.HD\shell\Mount\command]
    30
    @="\"C:\\Program Files\\Microsoft Virtual Server\\Vhdmount\\vhdmount.exe\" /p \"%1\""
    The result is a context menu on right-clicking a .VHD file like this.

    vhdmount5

    Mounting your disk file is now as easy as a right-click away, and the VHD will show up as a new disk in Explorer.