Windows – How to Make a Program See a Different View of the Hard Drive

hard drivesymbolic-linkwindows

I'm looking for a way to make some of my windows programs see a different view of the hard-drive as follows –

Let's say I want to make the contents of c:\folder1\folder2 look like d:\folder3 to one of my programs, and just that program.

I don't want to use symbolic links or junction points, as it will make all programs see it.

Any solution?

Best Answer

ACT is the Microsoft Application Compatibility Toolkit and can be used to generate shims for the Windows platform. A shim is a small library which transparently intercepts an API, changes the parameters passed, handles the operation itself or redirects the operation elsewhere.

In the case of redirecting the file system which is required here, the CorrectFilePaths shim can be used to redirect files from one location to another. For redirecting the registry, VirtualRegistry can be used in a similar fashion.

After installing the ACT it can be launched from: Start Menu - Microsoft Application Compatibility Toolkit, then choosing the Compatibility Administrator Tool.

Right-click on New Database and then choose an Application Fix. Continue through the wizard providing a name for the package (will appear in Programs and Features) and then choosing the CorrectFilePaths shim from the list. The syntax for this shim is: "oldpath";"newpath".

At the page where you describe the "Matching information" you can choose which processes load the shim, the values to match on include file version, file name, company name, etc..

Having generate a .sdb file using ACT, this can be installed (or uninstalled) on computers using the command line sdbinst.exe application, which is installed by default on Windows. The example usage for the tool is as follows:

Usage: sdbinst [-?] [-q] [-u] [-g] [-p] [-n[:WIN32|WIN64]] myfile.sdb | {guid} | "name"
    -? - print this help text.
    -p - Allow SDBs containing patches.
    -q - Quiet mode: prompts are auto-accepted.
    -u - Uninstall.
    -g {guid} - GUID of file (uninstall only).
    -n "name" - Internal name of file (uninstall only).
Related Question