The Easiest Way to Create a Bootable Windows To Go Drive

Apr 07, 2019

So, I've been having some trouble creating Windows To Go drives lately. Firstly, the built-in creator is present only on enterprise editions of Windows, and worse still, it only works with very few drives.

Secondly, while Rufus has an option to create Windows To Go drives, it refuses to do so if your drive doesn't have the "fixed" attribute set - although in my experience, this isn't required at all for a functioning Windows To Go install.

Lastly, while a manual method does exist, it's way too cumbersome for me.

So, I've created a tiny script called wtg-create to automate the process. Here's how it works:

  1. Download the script files from here (github mirror), and extract them.
  2. Rename your windows iso to windows.iso and place it in the same directory as the script and all the files that come with it.
  3. Even if you don't have the entire ISO, the script will work just fine with an install.wim image which is typically found in the sources directory of Windows ISOs (or any other WIM image, actually). 
  4. Next, simply run wtg-create.cmd as an administrator and follow the onscreen instructions.
  5. That's it! Now you can boot from the drive and use it as a portable Windows install.

The script makes use of 7-zip and the ImageX utility from the Windows ADK. The default download contains the x86 version of both, which should work on most systems, but you can swap these executables out for different versions as per your requirements. If you don't wish to download the entire ADK, I've made the ImageX executables available for download here.


Note that Windows To Go works only with Windows 8 or newer. An ISO of any edition (home, professional, etc.) will work. You can use this tool with modified .wim files too!

The script is licensed under the MIT license, and the code is available on Github. It's been tested on Windows 10. Enjoy :)


Update (April 30, 2019): Minor bugfixes

varDx - Easy PHP flat-file storage

Jan 09, 2019

PHP allows serialization, which is cool, but how do you store and use this data? Sure, you could use databases (SQL, et al.), but what if you don't want to deal with DBs just to store a few objects?

A few months ago, I wrote varDx, a tiny library (~2KB, <100 lines) which solves this problem. It allows you to read/write objects to/from flat files easily.

Usage is as simple as this:

require 'varDx.php';

$dx = new \varDx\cDX; //create an object
$dx->def('file.dat'); //define data file

$val1 = "this is a string";

$dx->write('str1', $val1); //writes key to file
echo $dx->read('data1'); //returns key value from file

It has functions for reading, writing, modifying, checking and deleting data. Get the code from the Github repository, and see the README file for more documentation.