scriptpw.dll on Windows 2008 and Windows 7 („ScriptPW.Password“)

In Windows XP and Windows 2003 you could use

set oScriptPW = CreateObject(„ScriptPW.Password“)
strPassword = oScriptPW.GetPassword()

to read a password from a batch command script without printing it on the screen.

Unfortunately, the DLL that contains the „ScriptPW.Password“ object, scriptpw.dll, no longer exists on Windows 7 and Windows Server 2008.

As a workaround I developed a tiny C# .NET 2.0 Console application that mimics the behaviour of the „GetPassword“ function call. Following is the complete source of the application:

namespace scriptpw
{
    using System;

    class Program
    {
        static void Main()
        {
            var s = string.Empty;

            while (true)
            {
                var i = Console.ReadKey(true);
                if (i.Key == ConsoleKey.Enter)
                {
                    break;
                }
                else
                {
                    s += i.KeyChar;
                }
            }

            Console.Out.Write(s);
        }
    }
}

You can also directly download a compiled executable here.

As a small example usage in a batch command file (CMD), the following two lines read a password into the ‚Host1Password‘ variable:

<nul: SET /P Host1Password=Enter your password: 
for /f "delims=" %%i in ('scriptpw.exe') do set Host1Password=%%i
echo .

To be used later e.g.:

someapp --password %Host1Password%

Hope you like it! 🙂