Windows 7 SteadyState solution simplified!


Download: Windows 7 SteadyState Version 1.0 Setup Files and Step-By-Step Guide!

On my last Blog Post I described a procedure to implement a Windows 7 SteadyState by utilizing differencing VHD files and the “Boot from VHD” feature of Windows 7. It was great to see the enthusiastic response from the community and how much some of you desperately needed such a solution.

However the procedure to implement my solution had many drawbacks: It was difficult to implement all the steps as they required a LOT of manual work. For that same reason deploying the solution to more that 10 PCs was pretty much out of the question. Another drawback was that it required the use of WinPE to handle the VHD files.

I promised to implement a more straight-forward method by using the Microsoft Deployment Toolkit (MDT) to deploy and configure the OS. So here it is! The solution in this Blog Post has many advantages over the old one:

  • It is straightforward. Just a simple reboot will get you to the initial SteadyState.
  • It is less prone to errors and faster. By avoiding the use of WinPE we return to the initial SteadyState after a single reboot.
  • It is easy to install. Just follow the instructions below. You should be up and running in less than 20 minutes (with most of the steps automated).
  • It is easy to deploy on several machines. We create a bootable media (DVDR) and use that to automatically install everywhere. MDT can also be used to install over the network.

I urge everyone needing to implement a Windows 7 SteadyState scenario to give it a try (Internet Cafes, Kiosks, etc.). I believe that you will find the solution clean and effective. As usual I am eager to receive your feedback on how this solution can be improved further or to address any specific scenarios that you have in mind.

Windows 7 SteadyState Step-By-Step guide:

We will need one PC where the Windows Automated Installation Kit (WAIK) and the Microsoft Deployment Toolkit (MDT) will be installed. Both of these are free downloads from Microsoft. We will use these tools with AutoIt scripts to create a bootable ISO from which we will use to automatically install Windows 7 and the SteadyState solution.

Step 1: Install WAIK for Windows 7

Download the Windows Automated Installation Toolkit from here: Run the installation. Choose “Windows AIK Setup”:


Run the setup wizard and accept the defaults.

Step 2: Install MDT 2010 Update 1

Download the Microsoft Deployment Toolkit from here: Select either the x86 or the x64 version (depending on the OS you are currently running). Run the setup file and select the defaults on the installation wizard.

Note: This solution was tested with the x86 version of MDT.

Step 3: Download the Windows 7 SteadyState setup files

Download the package containing the Windows 7 SteadyState solution files here.

Create a folder (for example: C:\SteadyState) and unzip the files there.


Step 4: Copy the Windows 7 media to the hard disk

Copy all the files from your Windows 7 DVD to the WIN7CD subfolder.


IMPORTANT NOTE (updated!): ONLY use Windows 7 Enterprise or Windows 7 Ultimate edition media. Other editions or multi-edition DVDs (which include all editions) will not work! You can get a 90-day trial edition of the Windows 7 Enterprise Edition here:

Step 5: Run the setup script

UPDATE: Before running “SETUP.exe” make sure that you have set the execution policy in Powershell correctly. Open Powershell (as an administrator) and execute the following command:

set-executionpolicy unrestricted

Answer “Y” to the Execution Policy Change question and close Powershell. Thanks goes to Brendan for pointing this out!

To automatically create our Windows 7 SteadyState installation ISO we will run the setup.exe script. This script (written in AutoIT) will configure MDT and prepare a bootable ISO which we will use to deploy the solution.

Run the script as a local administrator and wait for it to prepare your bootable ISO file which you will use to install the Windows 7 SteadyState solution to your PCs.

You should see several Powershell scripts executing while the image is prepared.



If you get the following message, click “This program installed correctly”:


At the end you should see a Windows Explorer window with the ISO file:


Burn the ISO file to a DVDR.

Step 6: Boot from the SteadyState ISO

Boot with your newly created DVDR on the computer you want to install the Windows 7 SteadyState solution.

WARNING: This procedure will completely format your hard disk so make sure you are prepared for this!

The bootable ISO will:

  • Install Windows 7 on a VHD file
  • Create and configure the use of differencing disks
  • Configure Windows Boot Manager

When your PC boots from the ISO you will have to select either the x86 or the x64 installation of Windows 7. Choose whatever version of Windows 7 you used during the creation of the ISO (in Step 4 above):


WARNING: Choosing the wrong OS version here will cause the installation to fail! If that happens simply restart the procedure.

After selecting the proper OS version the install procedure will start automatically. Allow plenty of time for the installation to complete (usually 15-30 minutes).


At the end of the procedure you should see a message that the “Operating System deployment completed successfully”. Do not proceed further if you have not received this message.


Click “Finish”. Windows 7 installation (configured for SteadyState) is complete:


Step 7: Configure your initial Windows 7 SteadyState

Proceed to install and configure whatever you want to be part of your initial Windows 7 SteadyState (install Office or run Windows Update for example).

After you are done simply reboot the machine.

After reboot you are given two options during the start procedure:


The first option (Windows 7) runs your initial State where you can configure it to your liking. Whatever changes you make will be permanent after your next reboot.

The second option (SteadyState) runs the initial SteadyState but any changes you make on it will be discarded on the next reboot.

This is basically it! In case you want to make changes that need to reboot your OS (installing Windows 7 SP1 for example) then simply select the first option after the first reboot. This will ensure that your changes are persistent in your SteadyState.

You can automate further the installation (for example by automating the Microsoft Office installation or a 3rd party program) by modifying the MDT 2010 Task Sequence which was created by the setup script. For further guidance on how to work with MDT 2010 look here:


Frequently Asked Questions:

  1. How do I change the size of win7.vhd on the OSDisk?

    Open the ZTIDiskpartVHD.wsf file in Notepad and look for the following line:

    DiskPartWrite oExec, “Create vdisk file=’c:\win7.vhd’ MAXIMUM=30000 type=expandable”

    We see here that we use an expandable VHD with a maximum size of 30000 MB (approximately 29 GBs). Edit the size to whatever you find more appropriate for your environment. Run SETUP.exe again to create a new ISO image with your change.

  2. Can I use a bootable USB drive instead of an ISO?

    Yes you can! Copy and paste all the files contained in the c:\DeploymentShare\Media\Content folder, to your USB disk. Make the USB disk bootable by running the command: bootsect /nt60 f: /force

    The bootsect.exe utility is located in the Boot folder of your Windows 7 media. Replace f: with the drive letter of your USB disk.

  3. I want to change the amount of seconds the boot screen is visible during boot or hide it altogether. How do I do that?

    Edit the BootScriptSteadyState.au3 and change the following line:

    RunWait(‘cmd /c bcdedit -timeout 5’,””,@SW_HIDE)

    The default is 5 seconds. A value of zero means that you will not get the boot menu at all.

    Compile the script (you will need to download and install AutoIt to be able to do that). Run SETUP.exe again to create a new ISO image with your change or simply replace c:\windows\system\BootScriptSteadyState.exe of a current installation.

  4. What does SETUP.exe do exactly?

    SETUP.exe is a script written in AutoIt. You can see the source code by opening the SETUP.au3 file. To make any changes download and install AutoIT (it is free!). This will allow you to compile a new SETUP.exe and use that to further customize the solution.
  5. Are there any system requirements for your solution? Do I need to pay any licensing fees to use it?

    The system requirements are as follows:

    For the PC where you create the ISO image: Windows 7 must be installed. Creating the ISO file requires at least 10 GB on the C: drive.

    For the PCs where you will install the Windows 7 SteadyState solution: The PCs must be able to run Windows 7 (as defined by the Windows 7 System Requirements) with a hard disk of at least the amount of the Win7.vhd file when expanded to its maximum capacity (the default is 30 Gb but you can change it – see FAQ number 1) plus the size of your initial SteadyState (5 Gb for a bare minimum Windows 7 installation + whatever you install afterwards). The absolute minimum is 35 Gb but I would recommend using at least 50-60 Gb hard disks if not more. If you have smaller disks then lower the size of the initial VHD.

    Regarding licensing: You only need to have a valid Windows 7 license for the PC where you install the SteadyState solution. WAIK and MDT are both free tools governed by their own licensees for use which you can read into each product’s documentation.You are free to customize any of the files I have provided as part of the solution (source code, configuration files, etc.). However I would humbly ask that you provide a reference back to this webpage if you intent to publish your changes on the web or elsewhere.

  6. MDT 2010 is capable of doing advanced deployments by using PXE or even integrating with SCCM for ZTI scenarios. Is your solution compatible with these capabilities? 

    Of course! SETUP.exe will fully configure your MDT 2010 installation and produce an ISO file to use for the installation. However you can customize the MDT 2010 installation to support any kind of deployment that best fits your environment including installing with PXE boot or by using a CDROM to simply connect your PC back to the MDT 2010 PC. See here for guidance on how to take advantage of the advanced deployment features that MDT 2010 offers.
  7. I have frequent problems with BSODs and system crashes during boot. What could be the cause?

    Make sure that you have enough free disk space on C:. If there is not enough free disk on C: to store the temporary state then you will get BSODs during boot. For estimates on free disk space see FAQ number 5. In case you are stuck in such a situation, either re-install the solution from the ISO file (by changing the size of your VHD file as described in FAQ number 1), or boot from your Windows 7 media, open a command prompt and delete any temp#######.vhd files you have found on your hard disks. Then reboot.
  8. Will your solution work in an Active Directory environment?

    I cannot see why not, but please have in mind that including a domain-joined PC in a SteadyState means that the AD Computer Account password will be reset on each boot. While this should not be a problem you should make sure that you have no issues with Group Policy being applied or authenticating to other resources in the domain (i.e. File Servers).
  9. I get several errors in the Boot Manager about improper configuration. What might be wrong?

    You probably restarted the PC while being in the configurable SteadyState by just turning the power off. This means that the differencing VHD cannot use the originating VHD to boot. If you are in this scenario simply boot to whichever boot option is available, reboot normally, go to the persistent changes state and reboot normally again. You can now continue to use the temporary state as you normally would.

A special thanks goes to The Deployment Guys for automating the deployment of Windows 7 to a VHD file. You can find their solution here.

Panos Macheras
Microsoft Infrastructure Consultant


Comments (143)

  1. Anonymous says:

    Please also have a look at the updated note on Step 4 about which DVD media will work. You have to use either Windows 7 Ultimate or Windows 7 Enterprise (x64 or x86 version). Other editions or multi-editions (DVDs that include all editions together) will NOT work with the solution.


  2. Anonymous says:

    @bob: A sector-by-sector will not work because the BCD store needs different GUIDs for each physical hardware that you use. You can try booting from media (USB, DVD, etc.) and then go into Command Prompt (with SHIFT-F10) and try to edit to BCD store of the hard disk from there. I am pretty sure that recreating the entries would work (but it's not trivial to do with bcdedit, I am afraid).

    Another thing that you can try is this: perform a proper installation of the vanilla image (as described here) and then try to simply replace the win7.vhd with an updated one. See my comment above for sosummy (Sun, Mar 18 1012 10:18 AM) on advise on how you might achieve this.

  3. Anonymous says:

    Chris Matthew Ecklar: Glad to hear that you found it helpful. I haven't tested the solution on MDT 2012 yet but I am guessing that the ZTIDiskPartVHD script is incompatible with it. The good news is that the script is not needed in MDT 2012 as this version can deploy VHD files natively. Investigate this course of action and get rid of ZTIDiskPartVHD altogether.

  4. Anonymous says:

    Basically we are looking for this… We will have 13 conference room PC’s setup. When users login they can do whatever they need to do. When the log off the system should restart and wipe any profile and or data they left on the machine. We will need to push Microsoft updates using WSUS as well we have software packages that we will push to the machines using MDT. Do you have any suggestions on how this can be configured solely using Group Policies?

  5. Anonymous says:

    Good work.

    I haven't tried this yet. I have ‘two’ questions beforehand.

    Is there a slower performance of a computer due to VHD (windows not running directly on a machine)? What about graphic intensive programs and games? Do they also run with their highest performance?

    Can I run this setup on a computer with two (or more) hard disks? How will the setup know on which drive to install? And can I have partitions on the drive where Steady State is installed?

    Do the external USB (hard drives, flash drives) interrupt boot up process after everything is setup and you just turn on the computer (for work) with USB drives already attached?



  6. Anonymous says:

    @sosummy: Unfortunately you can not do this easily as you need to boot from external media (USB, DVDR, etc.) in order to have access to the original VHD file (otherwise it is locked). You can try the following procedure to see if it works for you: Boot from media, go to command prompt with SHIFT-F10 and replace the original VHD file (win7.vhd) with the updated one (keep the same file name). Reboot and (important!) select the "Windows 7" boot option. You should be able to start your updated VHD. After that reboot into "SteadyState" and voila.

    However I understand that this procedure might not be convenient when you have a large number of PCs to update. In those cases maybe re-deploying the whole thing from scratch might be easier.

  7. Anonymous says:

    @njchaos: I don't think that you can achieve that by using Group Policies alone. If you want to patch the machines for security reasons then consider that by using a SteadyState system you are generally more safe from malware (you can, of course, continue to do the occasional patching but it will have to be a manual labour on each machine). It is the nature of the beast I am afraid: As things stand now you cannot "mix-and-match" what get's updated and what doesn't. It's an "all or nothing" proposition.

  8. Anonymous says:

    @Thomas Troxell: Do you have any other partitions and/or disks installed? A dual-boot configuration? Maybe this is what is generating the problem. Try booting from your Windows 7 media and deleting all existing partitions before using the SteadyState ISO.

  9. Anonymous says:

    @Rob B: I am solely responsible for not answering the posts. The notification system was not working for me for some time and this why you see all posts "suddenly" appearing. Please accept my apologies.

    Regarding the Boot screen: The solution is quite easy. You set the timeout variable to zero. When you need to do maintenance you simply increase the value to some seconds. You can do this either through the command-line (bcdedit /timeout 0) or by using a third-party graphical interface tool (like this: Just make sure that you include this tool in your SteadyState.

  10. Anonymous says:

    @cg11: Unfortunately the product group decided to block the "Boot from VHD" feature on versions other than Enterprise and Ultimate. I am fairly certain that this was not a technical decision (I believe that it could work equally fine on other versions) but rather a way to differentiate the pricing of the various editions. But this is only my guess.

  11. Anonymous says:

    @Pete: I have seen this error happening when the Boot Images were (for some reason) corrupt (see here:…/46d4b297-a2b2-479d-942b-08f6c5b51eb5). Also I see a reference to an E:Depoly folder which seems weird.

    I would suggest that you delete ALL files and restart over. Also make sure that you are using the proper Windows 7 edition (see the blog post for details on that).

  12. Anonymous says:

    Great article.

    We had a problem where our Steadystate laptop would sometimes bluescreen when attempting to enter the Steadystate mode.  Booting into Windows 7 mode would first display a BCD error related to the configuration of the Steadystate BCD entry, but we could continue from this error.  After completing boot, we would find a "stuck" large differencing file that indicated that the boot script was not executing properly.

    It turns out that this was caused by the Task Scheduler entry, which runs at boot time and creates the differencing file, being configured to execute only if the laptop was on AC power.  I believe this is the default for new tasks.  Once we changed this so that the task would still execute when the laptop is running on battery power, the problem went away.

    Just wanted to share this in case it helps others.


  13. Anonymous says:

    Hi, Panos . it's all is done thanx. but when i start my newly created boot DVD . it says winpeshl.ini not found system32… can you help me with this.


  14. Anonymous says:

    Hi Steve,

    You can read an in-depth explanation of VHD files here:…/dd440865(WS.10).aspx

    Thanks for sharing your experience on how to unblock the setup files. It seems that different installations require different things to make the scripts to work (for example on my VMs the only thing required is the set-executionpolicy command).

    Now, regarding the error you are getting during setup: This error usually means that an XML file is badly formatted. Please try to install the solution again on a brand new VM (if you didn’t try that already). Sometimes when you get an error during setup
    you need to cleanup C: and the boot sector to make the bootable ISO working again so using a brand new VM will give you that.

    To investigate further please send me a complete screenshot of the error message you are getting by using the "Email Blog Author" in the "Options" pane on the top-right of the blog.



  15. Anonymous says:

    @Iceman: Maybe you are not doing Step 7 right? Please provide more information (if possible) to investigate further.

  16. Anonymous says:

    To all people having the "Line 37" problem: I am still investigating what might be causing this. In the meantime please try John w's suggestion and try to disable your antivirus and your firewall before executing the script and please report back if that does the trick for you. Thanks.

  17. Anonymous says:

    @67NovaSS: You shouldn't have a problem if you are not touching the boot config data (which you probably did). If either a user or a virus modifies them then you need to restore the previous configuration (the data should be intact as you will use a blank differentiating VHD) by using a Windows 7 DVD media and fixing the boot entries. Unfortunately there is no way to safeguard (reliably) against that.

  18. Anonymous says:

    @Arian: Thank you for your feedback. Yes, the PS1 scripts and the EXE file need to be unlocked for the solution to work.

  19. Anonymous says:

    I've implemented this "Steady State" and its working great!  Thanks.

    I do have a question in regards to keeping all the systems in an identical lab environment updated.  Is it possible to update one vhd and copy it to all the systems? If so then which VHD file do I update and in which mode do I need to be logged in to make sure the file is not in use?  I'd love to eventually write a script that checks for an updated VHD on the network each night.  Is this possible or will the VHD needing updating always be active?  Thanks!

  20. Anonymous says:

    @njchaos: Are you looking for any specific setting that you want to implement? The solution should work without problems with Group Policies but it doesn't require them.

    The problem with WSUS is that you need to perform the updates while being booted in the "Windows 7" boot option, otherwise the updates will be lost after a reboot (that's the whole point with SteadyState). It can work but there is manual work involved. I would schedule those updates carefully and irregularly (as the need to protect from malware is smaller on a SteadyState environment).  

    Also don't forget to utilize Group Policy Preferences. They are a lot more flexible for things you might wish to control.

  21. Anonymous says:

    To all: Please accept my apologies for not answering your posts earlier. I should be able to have more prompt replies from now on.

    For those people that are interested: I am working on having a nice GUI that does the downloading and the creation of the ISO image (this will hopefully eliminate the need to "un-block" the script files). There is no ETA for this yet, as it is done strictly on my free time, but there is a good chance that I could have this in about one month's time (fingers crossed).

  22. Anonymous says:

    @zach: It is difficult to do by using my scripts (as they would need to be heavily modified). One alternative way would be to use Mark Russinovich's  Disk2vhd tool (…/ee656415) which can create a VHD file of a current installation. You then need to follow a similar approach to use a differentiating VHD file based on that. It is not trivial but it can be done.

  23. Anonymous says:

    First, thanks Panos, this is a great and really useful feature!

    I was also using MDT 2012 and not getting any joy…  Looks like it only works with MDT 2010 which is available from this link:…/details.aspx

    I didn't see any errors using 2012 but the OS deployed to the primary disk partition and not the VHD…  Both entries in the bcd pointed to that installation…  The Win7.vhd file was created but not the temp*.vhd files…

  24. Anonymous says:

    @Mike Zanos: Great tip! You are right, automatic defragmentation on the "SteadyState" mode will cause the disk to significantly expand. This would be a problem in cases where the user stays on the "SteadyState" mode for extended periods of time (without reverting to the initial state).

  25. Anonymous says:

    @Llukar: Where did you store the document? The only drive that is in SteadyState mode is C: (and not D:). Also look at the answer for @problem above.

  26. Anonymous says:

    Quick question: in a 'Steady State' environment you would want to password lock the admin (Windows 7) boot whilst leaving the SteadyState boot open for users.  Does this solution do this?  Not clear from what I'm seeing here…

  27. Anonymous says:

    @Just me: Thanks for the pointer about Wioski. It is a very nice solution, more or less based on the same idea (using a differencing VHD). However by looking at the process flow it seems that it actually requires two reboots to enter the "lock down" mode, where this solution only requires just one reboot to achieve the same result.

  28. Anonymous says:

    @Adam Kite: Did you, by any chance, set the timeout thershold to zero? (i.e. bcdedit -timeout 0). Set the value to something more meaningful (bcdedit -timeout 5) and reboot.

    Also from the blog post: "In case you want to make changes that need to reboot your OS (installing Windows 7 SP1 for example) then simply select the first option after the first reboot. This will ensure that your changes are persistent in your SteadyState."

    Let me know if that worked out for you.

  29. Anonymous says:

    @Windows Steadystate phased out: Not that I am aware of, unfortunately. This is why I created this solution.

  30. Anonymous says:

    @DonCarlos: Please have a look at my answer to @zach above. Maybe it can be done. I would use the disk2vhd utility but it would definitely not be trivial.

    Another solution would be to install the SteadyState as described here and then use a backup/restore method on top of it.

  31. Anonymous says:

    @Rob: Please read my reply to cg11 above.

  32. Anonymous says:

    @David: Do you see any files at all inside: c:deploymentsharemediacontent? Check that you have enough free disk space in C:. Also open the Deployment Workbench from the Start Menu, find the Deployment Share folder (c:deploymentshare) and remove it. Then delete the folder and start again. It might be that some leftover files from your previous tries lead to the errors you are getting.

  33. Anonymous says:

    @Dominic: Thank you Dominic. It's good to know that you find my solution helpful. It's not perfect but it can work if implemented appropriately.

  34. Anonymous says:

    dereksanderson: You would need to modify the Task Sequence to also deploy (automatically) anything you need on Step 6. You can find more info for Office 2010 (for example) here:…/hh537943(v=office.14).aspx

    It’s not trivial but it can be done.

  35. Anonymous says:

    Hi Steve,

    Thanks for trying out my Win7 SteadyState solution.

    FAQ#1 and #5 are from that very same list! So FAQ#1 (for example) is the "How do I change the size of win7.vhd on the OSDisk? " question answered just above. The same for FAQ#5: It is item number 5 in this very list (about System Requirements). No need to look elsewhere.

    For a 500 GB VHD, for example, you will need to open ZTIDiskpartVHD.wsf  and modify the following line:

    DiskPartWrite oExec, "Create vdisk file='c:win7.vhd' MAXIMUM=30000 type=expandable"


    DiskPartWrite oExec, "Create vdisk file='c:win7.vhd' MAXIMUM=500000 type=expandable"

    Good luck!


  36. Anonymous says:

    @Eli: You need to boot into "Windows 7" and make the change there. Remember when you are in "SteadyState" mode *any* change you make is lost, *including* the boot options.

  37. Anonymous says:

    @Sherif Gouda: Great input! This helps to eliminate the multiple editions DVD media problem. Thanks!

  38. Anonymous says:

    Thanks for previous answers.

    As you could guess I’m considering using this SteadyState for my home family computer.

    Computer has two internal hard drives (on one is OS and on other data) and several attached USB hard drives. As you pointed out this disk configuration would not be a problem for this kind of SteadyState.

    Options for ‘disks’ in BIOS are:

    IDE Channel 0 Master

    IDE Channel 0 Slave

    IDE Channel 1 Master

    IDE Channel 1 Slave

    IDE Channel 2 Master

    IDE Channel 3 Master

    (last two are both Master)

    Do I need to set up the HDD on which the SteadyState will be as 0 Master? And also wired it properly (put switch to master)?

    Out of curiosity I have two informational questions.

    If something goes wrong after using computer for a while and you cannot boot up the computer and access your important data saved on the HDD, can you do ‘external’ recovery? Removing this HDD and connect it to another working computer for recovery purpose, what will I see? Just ‘one’ big VHD file or files like in ‘regular’ computer? Or are there any better recovery solutions?

    Does this also work in computer capable running hardware RAID 1?

    Thanks again.


  39. Anonymous says:

    @Leif: Make sure that you have successfully done Step 4.

  40. Anonymous says:

    Thanks Panos for this solution.  It drastically cuts back on our set-up time for kiosks at our hospital.

    We are using MDT 2012 for our deployment tool for all 20,000 of our computers.  I've tried getting your solution working in MDT 2012 but am having issues.  Something appears to be going awry with the partitioning process.  Here is the contents of my BDD.LOG file surrounding the error:

    DiskPart> REM BOOT VHD Provisioning… ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    DiskPart> Create vdisk file='c:win7.vhd' MAXIMUM=50000 type=expandable ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    DiskPart> Create vdisk file='c:temp.vhd' parent='c:win7.vhd' ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    DiskPart> Select vdisk file='c:win7.vhd' ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    DiskPart> Attach vdisk ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    DiskPart> Create partition primary ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    DiskPart> Assign letter=E: ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    Property DestinationLogicalDrive is now = E: ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

    DiskPart> Exit ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

       DiskPart > ZTIDiskPartVHD 3/8/2013 4:29:28 PM 0 (0x0000)

       DiskPart > Microsoft DiskPart version 6.1.7600 ZTIDiskPartVHD 3/8/2013 4:29:58 PM 0 (0x0000)

       DiskPart > Copyright (C) 1999-2008 Microsoft Corporation. ZTIDiskPartVHD 3/8/2013 4:29:58 PM 0 (0x0000)

       DiskPart > On computer: MININT-TC10D52 ZTIDiskPartVHD 3/8/2013 4:29:58 PM 0 (0x0000)

    DiskPart returned error = -2146959355 ZTIDiskPartVHD 3/8/2013 4:29:58 PM 0 (0x0000)

    Run Format E: /FS:NTFS /V:BootVHDDisk /Q /Y ZTIDiskPartVHD 3/8/2013 4:30:03 PM 0 (0x0000)

    command: FORMAT.COM E: /FS:NTFS /V:BootVHDDisk /Q /Y   FAILED with error = 1 ZTIDiskPartVHD 3/8/2013 4:30:03 PM 0 (0x0000)

    ZTI ERROR – Non-zero return code by ZTIDiskPartVHD, rc = 1 ZTIDiskPartVHD 3/8/2013 4:30:03 PM 0 (0x0000)

    Command completed, return code = -2147467259 LiteTouch 3/8/2013 4:30:03 PM 0 (0x0000)

    Litetouch deployment failed, Return Code = -2147467259  0x80004005 LiteTouch 3/8/2013 4:30:03 PM 0 (0x0000)

    Any ideas?  Thank you.

  41. Anonymous says:

    I tried this solution few times until I finally gave up.  Luckily I ran into a program called Reboot Restore RX which works great as a replacement for Windows Steady State.  Anyways just wanted to let people on here know that this is another option.  Here is the link for the program if anyone that is interested:…/products_and_solutions.aspx

  42. Anonymous says:

    @Tom: Haven't had a chance to try it with MDT 2012 but in theory it should work (unless the powershell commands used in the scripts have changed with MDT 2012).

    Could you post the error messages that you get? Thanks.

  43. Anonymous says:

    @Mike Zanos: Everything will be undone (including registry) with the exception of the boot configuration. This is permanent as it is stored outside of the VHD files.

  44. Anonymous says:

    @Fergus Conolly: In case you need to lock access to the "normal" boot mode (Windows 7) vs. the "SteadyState" one then you basically need to do two things:

    1. Modify the solution to default to "SteadyState" (by setting the timeout bcd boot option to zero). See FAQ # 3 in the blog post on how to do this. That way the boot option is not displayed and "SteadyState" is selected by default.

    2. Have two user accounts in your SteadyState initial image: One which is a normal user (not an admin) and the other a proper administrator for which only you know the password.

    That way a normal user can only work inside the SteadyState boot and cannot change the timeout value to make the boot menu appear (since only local admins can do that). If you need to enter the "normal" boot mode then you simply login as admin, change the timeout value and reboot (FAQ # 3 again).

    Of course the solution is not 101% bulletproof against a determined and clever user. Remember: physical access to a PC means that practically everything is possible.

  45. Anonymous says:

    @Vlad B.: Theoretically it should work. Would like to see it in action though.

  46. Anonymous says:

    The solution for the "Unblock" problem is to unblock (Right-click>Properties and look for an Unblock button just below the Advanced button) the .zip file BEFORE extracting all of the files. All extracted files will be unblocked. As above, if you don't see the Block button, then you don't have the problem.

  47. Anonymous says:

    @William Chard: Do you get any errors at all during the creation process? Maybe not enough free disk space on C:? As a workaround you can copy-paste the contents of the c:deploymentsharemediacontent folder to a usb stick and make it bootable like by doing the following:

    You’ll need a utility called bootsect.exe which can be found in any Windows 7 DVD in the boot folder. Copy bootsect.exe from a Windows 7 installation disk and paste it in the C:WindowsSystem32 directory in your computer. Once you copied bootsect.exe from a Windows 7 installation disk to the System32 folder on your computer, type bootsect /nt60 X: (where X is the drive letter of the USB drive) and then press enter. Now your USB stick should be bootable.

  48. Anonymous says:

    To all those getting errors at Line 37 of the setup script please verify that the file: c:DeploymentShareControlOperatingSystems.xml exists and that the string "windows7.wim" is contained inside it (you can use notepad to verify this).


  49. Anonymous says:


  50. Anonymous says:

    @problem: Run the "bcdedit" command and review the output. The "SteadyState" boot option should point to the temporary VHD file and not to Win7.vhd. One problem might be that the Scheduled Task was not properly installed. In this case recreate the ISO and try the installation again.

  51. Anonymous says:

    This is good stuff Panos. I do have some feedback and a question though. I to like Steve had to right click and unblock all the files downloaded in order for teh ISO to be created so just an FYI on that.

    Also I setup the install successfully on a USB drive and installed it on a brandnew machine. The install went fine and I got the the 'Operating system deployment was successful' at the end. While still booted in the 'Windows 7' side I only changed the screen resolution and then rebooted to the 'SteadyState' side. I then went through and deleted random folders and reg keys trying to see if a restart would fix all the issues that say a serious virus could cause. While after rebooting the computer I got an error message:

    Windows Boot Manager

    Windows Failed to start

    File: BootBCD

    Status: 0xc0000034

    Info: An error occurred while attempting to read the boot config data.

    No matter  how many reboots it comes back. I have tried to do this with 2 different USB drives and 2 different computers with the same result.

    Any ideas why this would happen?



  52. Anonymous says:

    @njchaos: Please see my answer to Pete above.

  53. Anonymous says:

    @Mike Zanos: You can use a "slipstreamed" version of the Windows 7 ISO and use that on Step 4 above. You can find many tutorials for that on the web, like this one here:

  54. Anonymous says:

    @Cleber: Before you try again make sure that:

    a. You have deleted the folder: c:DeploymentShare (if it exists)

    b. You are running setup.exe as an administrator (right-click and "Run as administrator" if not sure.

  55. Anonymous says:


    I was wondering if there was anyone that might have encountered these errors. I have completed all the steps successfully and I get all the way to imaging the system (IBM ThinkCenter with 2GB RAM),

    Here are the error messages… ANY Help would be GREAT!

    Unable to find rules INI, r = 1

    ZTI ERROR – Non-zero code by ZTIGather, rx = 8000

    FAILURE: 8000: Running wscript.exe “X:DeployScrptsZTIGather.wsf” /nolocalonly

    Setup failed applying image: E:DepolyOperating SystemWindows 7Sourcesinstall.wim, rx = 31

    ZYI ERROR – Non-zero return code by LTIApply, rx – 31

    Litetouch deployment failed, Return Code = -2147467259 0x80004005

    Failed to run the action: Install Operating System

    A device attached to the system is not functioning. (Error: 0000001F; Source: Windows)

    The execution of the group (Install) has failed and the execution has been aborted. An action failed.

    Operation aborted (Error: 80004004; Source: Windows)

    Failed to run the last action: Install Operating System. Execution of the task sequence failed.

    A device attached to the system is not functioning. (Error: 0000001F; Source: Windows)

    Task sequence failed! Code: enExecutionFail

    Taks sequence execution failed with error code 80004005

    Error Task Sequence Manager failed to execute task sequence. Code 0x80004005



  56. Anonymous says:


    1. You have a performance penalty of about 5% on the hard disk. Not on graphics performance.

    2. The scripts install the VHD file on the first partition of the first hard disk (C:). However this can be changed by modifying the ZTIDiskpartVHD.wsf file where the location of the VHD is specified (look also on the answer #1 on the FAQ of the blog post). This VHD can be potentially placed on any partition as long as it is visible when the computer starts (i.e. no encrypted or hidden partitions).

    3. Regarding USB boot: This can be setup in the BIOS. If you wish to NOT allow USB drives to interfere you can have the local hard disk higher than the USB drive in the boot order in BIOS (or disable USB boot altogether).


  57. Anonymous says:


    If I want to include Office 2010 in the build, along with Acrobat reader, Security essentials, how do I do this, so that a boot DVD would deploy a full state with this as configured?

  58. Anonymous says:

    Hi Panos. Than you very much for coming up with this setup.

    I have a scenario I want to put by you and see if you could give me some feedback.

    I have a lab with several PC's that I have to deploy this to. Your procedure is great, but I was wondering if you could add on a section on customizing and redploying the steadystate image.

    In our lab environment, I need to deploy several programs and configure Windows quite a bit. It would be quite time consuming to go to each PC and deploy all of these settings and installs. It would be great if I could configure one and then repackage and redeploy that sysprep'd image. Having the fully configured image on a DVD to deploy at any given minute would be extremely handy.

    Any suggestions on how this could be done? I imagine there are others who would like to know this as well.


  59. Anonymous says:

    @Rodrigo: Only Ultimate and Enterprise editions work with the "Boot from VHD" feature.

  60. Anonymous says:

    Hi Panos,

    Great work here!

    I am having a problem getting my ISO's created.  When I run setup.exe, I get the following error:

    Line 37 (File: C:SteadyStateSteatdyWinSteadyState1.0Setup.exe)

    Error: Subscript used with non-Array variable.

    Any help would be greatly appreciated!

  61. Anonymous says:

    Thanks for the reply post… That was what I have started already. Would you happen to know where I might find an ADM or ADMX template for Group Policies – Turns out that this option is not going to work in our favor. My scenario is that I need this setup to be for corporate conference rooms that will be updated and managed by WSUS and MDT. Again thanks for any insight and help you can offer.

  62. Anonymous says:

    Hey Panos, Thanks for sharing the easy steps but I was stuck up at end. I have tried it for 2-3 times but unable to set up it properly. I heard about Faronics Deep Freeze before some days. They also providing same functionality with some advance features. Sharing the link of it…/enterprise

  63. Anonymous says:

    @Jack: At what time do you do the imaging with Ghost? It might not work if you are just shutting down and then taking the image.

    What I would try is this:

    1. Boot into "Windows 7" perform an sysprep and shutdown the PC.

    2. Boot with Ghost and take the image.

    However I am not sure if that would keep the GUIDs or not.

    Also if this doesn't work try to fix the Boot Entries manually by using bcdedit from a command line in boot media (DVD or USB). This might fix the issue.

  64. Anonymous says:

    @Thomas Troxell: You need to investigate the errors recorded in the log file of the installation. The log file is: c:windowstempdepoymentlogsbdd.log. Hopefully this will shed some light on what is going wrong during the installation.

    If you wish you can also use the "Email Blog Author" link at the top to contact me directly in order to send me the log file (I will email you back and you can reply with the attachment).

  65. Anonymous says:

    Thanks for the advice Panos… Unfortunately I ran into some installation errors which I can't get my head around.

  66. Anonymous says:

    Has anyone created a more up to date guide than this?

  67. Anonymous says:

    You can avoid error on line 37 just adding "-executionpolicy bypass" key into each string powershell invoking.

  68. Anonymous says:

    Dear Panos. I can’t yet handle the problem with Update-MDTDeploymentShare command…
    Please see the screeshot –

  69. SteveW says:

    Panos, First – great stuff, a really straight forward guide! This is my first search for SteadyState since we implemented SCT v1 then WSS v2.0 & v2.5 on XP in our cafe nearly 3 years ago! It's given me great hope for a simple, yet robust Win7 solution!

    You mention in Q5 & Q7 a reference to FAQ#1 & #5 re: VHD maximum size – but don't provide a link to it – not being a follower of your blog I don't know whether this is a FAQ you maintain somewhere, or whether it's a FAQ off one of the other links. After a few quick excursions to these other pages, I've still not found this elusive FAQ list.

    We have gaming PCs which have over 400GB of apps/games, so obviously need to ensure that the VHD solution will cope.

    Could you update your doc to give active links to the FAQ sections mentioned.

    Many thanks


  70. SteveW says:

    Hi Panos,

    Well I feel a complete fool with that! Thankyou – I must admit I was looking for a more indepth FAQ about the limits and configs of VHD files. (do you have to allocate 50% blank space for the differential VHD etc)

    However, in order to rectify this, I thought I'd give you some quick feedback:

    Scenario:I created a clean host build Win7x86 system in a VM, using clean MSDN Win7x86UltimateSP1, installed WAIK, MDTx86, and SteadyState files all installed AND "set-executionpolicy unrestricted" – however, SETUP still getting "ImportOS.ps1 is not digitally signed" error, UNTIL I manually UNBLOCKED each and every file in the SteadyState prep dir by RH-Clicking, properties, UNBLOCK – then the SETUP script created an ISO. (if you can't see UNBLOCK within properties then it's already done)

    I then took this ISO into another clean VM, booted into x86 and began to build. Unfortunately within seconds, a big red error box, 1 error, 2 warnings about "end tag 'os' does not match the start tag 'variable'…" and then lots of debug dump.

    I thought I'd created the perfect clean build and test environments, but I still can't get further. The investigation continues.

  71. cg11 says:

    Why will other Windows editions (like Professional) not work?  It would be nice to know the reason. Thanks.

  72. zach says:

    Hi this is just what i was looking for, here's my question how would i combine this steady state to an already prepared (all applications installed and configured) captured image, or computer.


  73. Omar says:

    Hi Panos,

    This is really great work.  I am trying to get a test system configured but I am running into trouble when I go to make the ISO.  When I run the setup.exe, it does not complete and give me an AutoIT error reading:

    Line 37 (File: C:SteadyStateWin7SteadyState1.0SETUP.exe)

    Error Subscript used with non-Array variable

    I'm completely new to scripting so I was hoping you might be able to shed some light on this for me.  Thanks and keep up the great work!

    Omar M.

  74. Andrei K says:

    Me to i get the same error and i dont know what to do , any help please ?

  75. DonCarlos says:

    Hi Panos!

    This is a very good tutorial! Can I apply Your method to already installed PCs? I installed all computers in our schools lab, and I don't want to do all over again. I saw I can copy the existing system to a wim file, then I can apply that file to a vhd. Can I use that vhd file with your solution?

    Thanks in advance!

  76. Sherif Gouda says:

    I suggest additional steps because I tested them:

    1) Many Win 7 ultimate DVDs contain remains of multi-editions although you cannot recognize them during the installation. To remove these remains, copy contents of Win 7 in the folder "Win7SteadyState1.0WIN7CD" and then go to the folder "sources" to remove any clg file for any other edition and use the free open source "gimagex v. 2.0.17" to delete any image index for any other edition in "install.wim" without mounting.

    2) If you use Win 7 SP1, you need to install "WAIK supplement for Windows 7 SP1" as update to "WAIK". To install it, use the following steps: Emulate the iso file with the free open source emulator "WinCDEmu" and then if Waik is installed in C while D is the emulated disk for WAIK update, then run "Command Prompt" with "Run as administrator" on right click:

    a) xcopy D: "C:Program FilesWindows AIKToolsPETools" /ERUY

    It must copy 134 files.

    b) xcopy D:*winpe-dot3svc* "C:Program FilesWindows AIKToolsPETools" /ERY

    It must copy 82 files.


  77. iceman says:

    Hi Panos, I'm testing this solution in a laptop, but with problems, sometimes when I change the wallpaper, and then restart, the wallpaper remains.I reinstall several times but the problem continues not always have the same behavior.


  78. Hao L says:

    Hi Panos,

    I am getting the same error as Omar M. Any ideas? I am using a Win7wSP1 Ent media

  79. Rob says:

    Any chance this could be made to work with Windows 7 Professional edition?  I don't have licensing for Ultimate or Enterprise and configuring it with a 90 day trial version seems like a waste of time.

    Unless I am misreading some of the setup files, I am guessing that entering the OSGUID for the Professional edition should allow it to work, but I don't know where to locate that OSGUID.


  80. Rob B says:

    Are comments being posted by the moderator anymore?  I have submitted 2 that still do not show, so I am just wondering if I am wasting my time.

    But, I would like to turn off the boot screen in a public environment, but I would still need to get to the boot screen to perform maintenance, is this possible with a keystroke or running another bat/cmd file?

    Please post and/or respond.

    Thank you.

  81. Thomas Troxell says:

    I have burned several different CDs and made sure that the space for the VHD is more than necessary, however, after every installation, the PC boots up with a yellow screen that says either 1 or 2 errors/warnings were encountered during the installation. One is that the disk or partition was not created or was not found. I have yet to get a screen with 0 errors and 0 warnings. I have also unblocked all the files in the SteadyState folder. The PC will boot up after installation and I will try to install Windows Updates, but immediately upon restart I get an error saying that "BOOTMGR IS MISSING". Press Ctrl+Alt+Del to restart". Any help?

    I have followed the guide step by step, but always seem to get errors. I am working on Gateway machines for a school system, so being able to troubleshoot this issue is my top concern.

  82. John w says:

    Hi Omar I had the same problem. I did two things that solved ths problem, I disabled my anti-virus and firewall.

  83. Ken says:

    Hi Panos – I'm getting the same issue as Omar.  I'm using a file copy from a Win7 with SP1 integrated, if maybe that could make a difference.  I've been trying to isolate the variable, which appears to be this couplet:

    $osText = FileRead($osFile, FileGetSize($osFile))

    $guidOSText = StringRegExp($osText, "{.*}", 1)

  84. Thomas Troxell says:

    I have no OS installed on the disks. I am preparing the disks on my Lenovo laptop and then running them on the Gateway machines. Disk is completely formatted (I have changed it from the disk have no partition to a blank partition). In the end, I still get an error when Windows loads up. The error screen is yellow with one error having being detected. During the process to make the ISO image from the SteadyState folder, I do get one quick red error (maybe staying on the screen for 3 seconds, saying something about the program having issues writing or copying to the Deployment Share folder either Media or another folder. After that, it will continue its processes, without any other errors. Any ideas? I have tried to use a Non-Microsoft solution called "Wioski" and I had a problem where I couldn't install Windows after it had unpacked all the files.

  85. Mike Zanos says:

    Is there a was to add Windows 7 SP1 to this process, such that when the ISO is created, SP1 is either pre-installed or located in a directory?

  86. William Chard says:

    I have followed your steps and when the process is completed the ISO is not created., just the content folder.

    I posted this before but it didnt show up,  so i am posting again.

  87. Mike Zanos says:

    What changes can be "undone" with this solution. For example, when booted into "SteadyState", registry changes occur as a result of a software installation. Will the registry return to the before installation state on next reboot?

  88. David says:

    still having trouble building the iso – getting a single error

    running win7ent x64 with waik supplement for sp1 coppied over as described above – source media is win7ent x64 single os disk


    verbose: performing operation "new drive" on target: "name: steadystate provider: microsoft.bdd.pssnapinmdtprovider root: c:deploymentsharemediacontent"


    newpsdrive: the deployment share at c:deploymentsharemediacontent could not be opened at

    c:win7steadystate1.0createmedia.ps1:4 char12

       +new-psdrive <<<< -name "steadystate" -psprovider "mdtprovider" -root "c:deploymentsharemediacontent" -description "embedded deployment share" -force -verbose

       +categoryinfo              : invaliddata: (steadystate:psdriveinfo) [new-psdrive], deploymentpointexception

       +fullyqualifiederrorid: invaliddp, microsoft.powershell.commands.newpsdrivecommands

    any help would be greatly appreciated

  89. William says:

    @Panos  I dont get any errors.  It runs the full cycle, just dosnt create the ISO.  I will try the above method next

  90. Mike Zanos says:

    There appears to be a problem with defragmenting differencing disks. It seems to be okay to manually defragment while in the "Windows 7" mode (parent). But, if you leave your machine in the "SteadyState" mode (child) for long periods of time you will notice an unexplained "growth" in the size of the vhd. Windows 7 defragments automatically by default. If you run the defragmenter you will see that both C: and D: are set on a default schedule. You can disable this as well in the defragmenter. A search produced this reference:

    Step 4 (Optional): Reduce the base VHD file size

    You might want to click the Configure schedule button and disable automatic defragmentation. While booted into a differencing VHD, defragmenting the disk can lead to a big increase in the differencing disk size.

    This is taken from an interesting blog that contain other useful information:…/booting-windows-to-a-differencing-virtual-hard-disk.aspx

    Hope this helps …

  91. Steamofterror says:

    When I run setup.exe i get the following error:

    The term 'SETUP.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

    At line:1 char:10

    + SETUP.exe <<<<

       + CategoryInfo          : ObjectNotFound: (SETUP.exe:String) [], CommandNotFoundException

       + FullyQualifiedErrorId : CommandNotFoundException

    Please help:)

  92. Arian says:

    Line 37 Fix.

    Unlock all PS1 files in SteadyState folder. Properties > Unlock.

    I also unlocked .exe just for the hell of it.

  93. eli says:

    In your FAQ you described how to change the time of the boot menu. Is there a way to do that after the installation? I tried it and could not make the change permanent. If I set the timeout to 0 it will only affect the next boot. The change is lost after I reboot again.

    Is there a way to use a script, which will edit the entries in the bootmanager after every boot/before shutdown?

  94. Bob Hyatt says:

    Good configuration. I would like to use it and customize the desktop settings for a kiosk environment, then duplicate the disk to a few other machines. I'm stuck at the duplication process. After a sector by sector clone, the imaged machine boots up with a "BCD store file contains some invalid information" error referencing the steadystate GUID. I've tried the bcdedit commands but are returned with "the boot configuration data store could not be opened, the volume for a file has been externally altered". Has anyone experienced this? I would think I should be able replicate the environment by simply reformatting the drive and copying the vhds over, and attaching them.

  95. Dominic says:

    Hi Panos. Thanks for your support on this site. This steady state solution has been invaluable in helping us better manage our 114 seat student computer lab. It has also been especially good in helping us better manage virus problems which had been a nightmare previously.  

  96. Adam Kite says:

    When i do the first reboot i do not get any boot options it just goes into steady state after the first reboot. I do need to do several reboots before i want to enable steady state. Any ideas?

  97. pete says:


    Can you assist me with this error. I completed all steps successfully. I get the following when the system is n the imaging process. This is being tested on an IBM Desktop with 2GB of RAM…

    Unable to find rules INI, r = 1

    ZTI ERROR – Non-zero code by ZTIGather, rx = 8000

    FAILURE: 8000: Running wscript.exe “X:DeployScrptsZTIGather.wsf” /nolocalonly

    Setup failed applying image: E:DepolyOperating SystemWindows 7Sourcesinstall.wim, rx = 31

    ZYI ERROR – Non-zero return code by LTIApply, rx – 31

    Litetouch deployment failed, Return Code = -2147467259 0x80004005

    Failed to run the action: Install Operating System

    A device attached to the system is not functioning. (Error: 0000001F; Source: Windows)

    The execution of the group (Install) has failed and the execution has been aborted. An action failed.

    Operation aborted (Error: 80004004; Source: Windows)

    Failed to run the last action: Install Operating System. Execution of the task sequence failed.

    A device attached to the system is not functioning. (Error: 0000001F; Source: Windows)

    Task sequence failed! Code: enExecutionFail

    Taks sequence execution failed with error code 80004005

    Error Task Sequence Manager failed to execute task sequence. Code 0x80004005

  98. Adam Kite says:

    Hi Panos

    I would really appreciate a way to build a steady state install CD / DVD that installs my own wim image? I can see you mentioned that you can replace the win 7 vhd file but i need a way to build out 500 machines that do not have network boot capability. Any ideas?

    Thank you for your time.

  99. just me1 says:

    So this is just the same thing (or actually worse) than…/default.aspx (download links on the left side of the page)

    Wioski has been around since 2010, and what I've heard it should include WSUS patching in the upcoming version…

    Installation video:


  100. problem says:

    I test this solution ata a virtual machine. The progress of the install is ok, but when i run at steady boot option, the system dont restore at previus state … it works like normal boot.

    the OS is Windows 7 Enterprise

  101. Lkular says:

    Create both a 64 bit & 32bit ISO without any errors but after I installing the 32bit ISO on to a laptop & installed office 2010, anti-virus and update without any problems and then ran it steadystate mode and created a word document then rebooted it retained the document which it should have removed after a reboot? So I  deteled document and disabled the firewall and anti-virus and ran steadystate mode again and created a another word document then rebooted but again it reatined document?  So I installed it on to another PC without loading any software or updates with the same results this time save a notepad document? Would be grateful for any help!

  102. Ron says:

    Fantastic solution on a single pc, I wish to back up a system with all programs and updates installed and reimage to other pc's with identical hardware The problem is I keep getting BCD store contains incorrect information when I reboot the newly restored image.  I have tried fixing the BCD store with no luck. Any ideas?

  103. Windows Steadystate phased out says:

    Microsoft cancelled support for steadystate and supposedly removed the download link.  Is there an alternative product?

  104. LB says:

    Hello, following your instructions I installed the machine, but if I install a program in option 2 SteadyState and then restart the changes remain. Where am I doing wrong? thanks LB

  105. Jack says:

    We are seeing the same problem as Ron, imaging and restoring this solution with Ghost results in a problematic BCD. BCD seems to struggle matching the GUID's to the VHD's… any idea's on the cause and where to start looking for a solution?

  106. tom says:

    As I get some errors after the installation I just want to ask if someone can confirm, that this still works with MDT 2012?

  107. Rodrigo Tavares says:

    Win 7 Pro not work?

  108. Cleber says:

    When running "SETUP.exe", I get the following error.


    Line 37 (File "C: Win7SteadyState1.0 SETUP.exe"):

    Error: Subscript used with non-AArray variable.

    And don't creates the ".ISO".

  109. tom says:

    (Sorry, if this post is published two times … but I cannot see my first entry after half an hour …)

    @Panos: I have switched to MDT2010 and Windows 7 x86 as source and now it works like charm -thank you very much!

    One issue: Are there any hints for configuring the system (especially the SteadyState partition), so that "evil users" cannot harm my computer? In the original MS version were a lot of options to restrict the access …

  110. Jakob Svarrer says:


    Thank you so much for the time and effort you put into this project, It's just what i needed for a couple of computers at my company. No problems to get it to work, by using a DVD or creating a Bootable cd connecting to my MDT test enviroment.

    Next step was to make the task sequence available in our SCCM 2007 enviroment, but I just can't get it right, in the step of Applying operating system, i fails and the process stops, reporting:

    Unable to open reparse point E:Documents and Settings (it might be the unattend.xml, i'm not able to get right). At reboot, i have to create a user, then copy the two exe files (ConfigureSteadyState.exe and BootScriptSteadyState.exe and run the command, and the computer it running in steadystate mode.

    So does anyone had any luck implementing this as a SCCM task sequence, which I may have a look at

    (as an exported Task sequence)



  111. Adam Kite says:

    Hi Panos I have rolled out 13 of these now and we are getting activation errors it seams that the terminals are now not saving any changes if you go into the Windows 7 boot option as we are trying this to add the licence keys. This solution is very unstable and I dont think you should be telling people to use it!

  112. tom says:

    Sorry for the delay …

    I have tried your solution with MDT 2010 and Windows 7 x86 and have no problems anymore!

    Just one question: Are there any hints for configuring the system furthermore, so a normal user cannot harm it? With the original SteadyState from MS you can manage a computer in a way that users can only start specific programs or that the reference system (here: Windows7) is not available to them …

  113. DougD says:

    Just a heads-up that we ran into some issues that looked to be BCD specific, but were actually caused by the following option being checked in the Task Scheduler properties for the SteadyState task that runs at system startup:

    "Start the task only if the computer is on AC power"

    We've implemented this solution on a laptop and with this option checked and the laptop running on battery, the task would not execute correctly.  We'd end up with a large differencing file that together with the Win 7 vhd, caused a bluescreen due to disk space issues when another differencing file was created and expanded.

    Hope this helps someone.

    – Doug –

  114. Cleber says:

    When running "SETUP.exe", I get the following error.


    Line 37 (File "C: Win7SteadyState1.0 SETUP.exe"):

    Error: Subscript used with non-AArray variable.

    And don't creates the ".ISO".


    @Cleber: Before you try again make sure that:

    a. You have deleted the folder: c:DeploymentShare (if it exists)

    b. You are running setup.exe as an administrator (right-click and "Run as administrator" if not sure.


    >>>>>>The problem continues, have any more suggestions?

  115. philkryder - says:

    I've set this up, but, I want a SCREENSAVER to fire every 5 minutes of inactivity (it is a special screen saver that forces a reboot).

    I've set the registry entries and GPOs for the screen saver, but, it won't come active.

    Is this caused by:


    Mouse drivers

    Keyboard drivers

    ?something else?

    The screen saver works on other machines and forces a restart like a hammer.


    It doesn't ever get fired on my steady state box.


  116. Tess E says:

    I followed the steps as described above.  However, at the end of Step 6, the OS deployment completed successfully but with 7 errors.

    Litetouch deployment failed.  Return Code = -2147467259 0x80004005

    Failed to run the action:  Configure SteadyState

    Incorrect function.  (Error:  00000001; Source:  Windows)

    The execution of the group (State Restore) has failed and the execution has been aborted.  An action failed.

    Operation aborted (Error:  80004004; Source:  Windows)

    Failed to run the last action:  Configure SteadyState.  Execution of task sequence failed.

    Incorrect function.  (Error:  00000001; Source:  Windows)

    Task sequence Engine failed:  Code:  enExecutionFail

    Task sequence execution failed with error code 80004005

    Error Task Sequence Managewr failed to execute task sequence:  Code 0x80004005

    Any help would be greatly appreciated.

    I'm building this for a kiosk PC that will have Win7 x64.



  117. Frank says:


    Nice tutorial, it seems straightforward.

    But I have one question: will it work with Microsoft Deployment Toolkit (MDT) 2012 Update 1 and windows 7 enterprice x64 (without SP)?

  118. Cleber says:

    When running "SETUP.exe", I get the following error.


    Line 37 (File "C: Win7SteadyState1.0 SETUP.exe"):

    Error: Subscript used with non-AArray variable.

    And don't creates the ".ISO".


    @Cleber: Before you try again make sure that:

    a. You have deleted the folder: c:DeploymentShare (if it exists)

    b. You are running setup.exe as an administrator (right-click and "Run as administrator" if not sure.


    >>>>>>The problem continues, have any more suggestions?

  119. Mr. singh says:

    Hi Panos, it's all was very greatful i done this all very well. but  when i start my DVD it says winpeshl.ini not found .. how i can solve this


  120. damon27 says:


    I tried several times but always the same problem (x86 and x64):

    During deployment process,  7 errors and 0 warninigs were reported.


    Litetouch deployment failed, Return Code = -2147467259 0x80004005

    Faild to run  the action: Configure Steady State.

    Incorrect function. (Error:  00000001; Source: Windows)

    The execution of the group (Steady  Restore) has failed and the execution has been aborted. Anaction failed.

    Operation aborted (Error: 80004004; Source: Windows)

    Failed to run the last action: Configure Steady State. Execution of task sequence failed.

    Incorrect function. (Error: 00000001; Source: Windows)

    Task Sequence Engine failed! Code: enExecutionFail

    Task sequence execution failed with error code 80004005

    Error Task Sequence Manager failed to execute task sequence. Code 0x0004005

    It drive me crazy.

    Somebody please help

  121. james says:

    If I change the boot time to 0 (instant) as you mention in your FAQ #3, does that allow me to change it back at a later time so I can implement changes into the main image file so I can keep a permanent change?  For example, I'd like it so the users aren't aware that they can make permanent changes, however, if I want to do updates, I'd like to be able to change back and forth between the temp and the real image.  Thanks for the tutorial!!

  122. Zokis says:

    Hi Panos, thanks for tutorial is't great but cannot finish the installation.

    I've been using MDT 2012, and having errors like Tess and damon27.

    In errors it states that network adapter cannot be found.

    I've tried inject drivers in MDT "Out-of-box-driver" but I make mistake somewhere because when I start "SETUP.exe" it deletes everything from DeplyomentShare and recreates it (As is should from looking at "CreateDeploymentShare.ps1").

    I've even checked your link for MDF solutions accelerator but it didn't help.

    I've would be veeeery grateful (beer?)  if you could answer even with basic pointers how to inject drivers (it's been year and some since you posted this article…I know 🙂 ).

  123. Vlad B. says:

    Hi, Panos. I was just wondering if this might work if I replaced the original install.wim with a captured imagex wim image renamed to install.wim – this would save a lot of time spent installing drivers/some basic programs.


  124. How do I make Office and Security Essentials all part of one deployable image?

  125. Dave says:

    I work right now for organization that support the children public communities like a library, and we tried to implement the steps which is you mentioned to it, but we got Error line 37, as I came over all the comments it seem there is no solution for this problem. Please if you have any recommendations that help us to get the steady state will appreciate that.  

  126. sam says:

    Hi Panos

    I follwoed all the steps, with last step i got error ( operating system deployment not install successfully)

    So please any suggestions .

    Thank you

  127. Farzan says:

    Hi Panos,

    I am getting the following error:

    Litetouch deployment failed, Return Code = -2147467259 0x80004005

    Failed to run the action: Configure Steadystate.

    Incorrect Function. (Error:00000001; Source:Windows)

    The execution of group (State Restore) has failed and the execution has been aborted. An action failed.

    Operation aborted (Error:80004004: Source:Windows)

    Failed to run the last action:configure Steadystate. Execution of task sequence failed.

    Incorrect function. (Error: 00000001: Source Windows)

    Task sequence engine failed! code:enExecutionFail

    Task sequence execution failed with error code 80004005

    Error Task sequence manager failed to execute task sequence code 0x80004005

    First I was using enterprise windows 7 with SP1 and I was getting the same error and I thought I should should the base version that is without SP1. I gone through all steps again captured steadystate.iso and now I ran it again on the system but I am still getting same errors.

    Any ideas? I am running this on HP mini 110-4102TU.

  128. Rob says:

    I am having the same issue as damon, is there any help for me?


    Litetouch deployment failed, Return Code = -2147467259 0x80004005

    Faild to run  the action: Configure Steady State.

    Incorrect function. (Error:  00000001; Source: Windows)

    The execution of the group (Steady  Restore) has failed and the execution has been aborted. Anaction failed.

    Operation aborted (Error: 80004004; Source: Windows)

    Failed to run the last action: Configure Steady State. Execution of task sequence failed.

    Incorrect function. (Error: 00000001; Source: Windows)

    Task Sequence Engine failed! Code: enExecutionFail

    Task sequence execution failed with error code 80004005

    Error Task Sequence Manager failed to execute task sequence. Code 0x0004005


    I too have tried both x64 and x86 installs on the same machine, in addition to recreating the media twice, and re-burning the install media about 3 times with verification.



  129. Leo says:

    I've encountered a solution just a bit more simple.

    First Download the steadystate at the straight way.

    Right click on the installer then "properties"

    At "Compatibility" guide, check the "Execute this program in compatibility mode", then select "earlier windows version".

    Apply and ok.

    Just run the installator and be happy!

  130. Mike Zanos says:

    From my experience with this solution, it appears to work only where SteadyState takes over the entire hard disk. So am I correct in assuming that you could not have a dual boot configuration with SteadyState? Or can a hard disk be setup with multiple partitions and SteadyState could be installed on one of these existing partitions.


  131. Mike Zanos says:

    After the successful build of this "SteadyState" machine, is it possible to use "create VHD" in Windows 7 and package the entire "SteadyState" install into one or more VHD files that can be copied to another computer that has a blank NTFS partition. Would it then be possible to boot this second machine from the VHD file? If this were possible it would make this great solution even better by making it portable.

  132. Robert says:

    Hi there,

    i tried to install this solution. It works fine, but when I try to boot from the created DVD (Litetouch Boot [STEADYSTATE] (x86) [EMS Enabled]), the computer crashes after booting. A few seconds after the blue background "Microsoft Solutions Accelerators" appears. I don't know why it crashes..

    I hope that anybody could help me.


  133. Jack Smith says:

    Hey Panos,

    Great guide for steadystate. But Microsoft has phased out steadystate so now it not compatible with Windows 8 right? So looking for alternative for steadystate. Please let me know your views on it and also let me know about Deep Freeze. I heard reviews of it and most of them are saying it is good alternative of steadystate.

  134. SteadyState Nut says:

    Can you explain what happens if we don't use enterprise or ultimate. What happens if professional is used?

  135. JJ says:

    hi Panos — Is there a way to change the menu entry order making Windows 7 as default instead of SteadyState just like the timeout value? Thnx.

  136. davidv says:

    I'm having the same problem as Tess, Rob and Damon27.

    It seems to me it has something to do with the networkcard driver. I tried this on a Dell PC, which has an Intel networkcard that is out of the box not recognized by W7, slipstreamed the required drivers into the W7 Enterprise DVD but it appears that the drivers are installed at a too late point in the installation. No idea why this installation requires a working network card to finish the installation of the steadystate boot sequence…

    Before I slipstreamed the drivers I got even more errors when installing.

  137. LurchMeisterFantastic says:

    I am not a script person, and i was only dinking around with this steadystate stuff to see what options i have available using parent/child VHD's.  Anyways!!!

    to all the people having issues making this/these scripts run.  the problem is because of the default policy of the powershell.  changingb the policy as mention in the tutorial is ONLY GOOD FOR ONE SCRIPT.  causing subsequent ps scripts to fail and cause the script written by this author to fail as well.  

    to solve the issue.  you need to open and save (BUT DO NOT MODIFY) each file with extension .ps1  this will change the file to have been written by your computer and cause the script to complete.  I have done this. after 3 days playing with possible problems, at last! and the media is being creates as i type this today.

    hope you all find this useful.  good luck.


  138. Tyler says:

    I am also having the same problem as Rob (Litetouch deployment failed), I am using SP1 with the AIK supplement as was stated in a previous comment.

    I am not entirely sure what to try next in getting this up and running.

  139. btv300 says:

    When running "SETUP.exe", I get the following error.


    Line 37 (File "C: Win7SteadyState1.0 SETUP.exe"):

    Error: Subscript used with non-AArray variable.

  140. Leif says:

    I get the following error when trying to build a ISO Import-MDTTaskSequence : Cannot bind parameter ´OperatingSystemPath´ to the target. Exception setting "OperatingSystemPath": "Cannot find path ´DS001:Operating SystemsWindows7.wim´because it does not exist."
    At c:Win7SteadyState1.0CreateTaskSequense.ps1:5 char:94

  141. Eric H says:

    Can you use MDT2012 instead? I'm pretty sure I followed everything correctly, but after what looks like a successful install there is no steady state anywhere. Whether I select Windows 7 or Steady state to boot to there is no steady state anywhere.

  142. Bill C says:

    I am getting the AutoIt Line 37 error as well. Did anybody ever find a solution for this???

  143. BillC3 says:

    I checked the AutoIT forum for a solution to the Line 37 error issue. Here was the moderator's response:

    "The likely problem area was described quite clearly by BrewManNH – the RegEx is almost certainly not returning an array and so the script fails when you try to access an element of this non-array variable later in the script. You need to add code to check
    if this is the case and deal with it. :)"

    BrewManNH's last post on the thread was:

    "Your code here:

    $osText = FileRead($osFile, FileGetSize($osFile))
    $guidOSText = StringRegExp($osText, "{.*}", 1)

    is what is supposed to return the array to $guidOSText, but if it doesn't find the text in the string $osText,it returns nothing. I don't know what's in the file you're reading so I can't say for sure why it isn't working."

    Does this make sense to anyone out there? I don't know anything about AutoIT scripting so it's all greek to me.