Windows – sysgrep and CopyProfile=true not actually copying profile or seems to be doing anything in Windows 8.1

clonewindowswindows 8windows 8.1

I've been trying loads of times to build a reference windows-installation on a PC, with user customizations and installed software, and then deploy it on another PC, with different hardware. This task has proved much, much more tedious and problematic than I ever wanted.

I've been using sysgrep to prepare the reference computer to be installed on the new computer. This 'works', but this seems to remove all user profiles and creates a new one. Any user customizations like UserData folder, task bar settings, etc are all lost. I would like to keep these as well. I did manage though to get the new computer up and running with the reference computer windows image, and with installed software. However, all software which store settings in UserData , which is basically most of them need to be reconfigured. For example, I installed Mozilla Firefox and set a custom homepage to test, and after sysgrep this data is lost as UserData folder is re-created. I've used an unattend.xml file and the /unattend setting in sysgrep, but it doesn't seem to work. However, the unattend.xml profile is being read definitely, because at first I had some incorrect properties in XML and it was giving an error.

Below, are the steps I've tried, maybe anybody can help because I'm really lost:

  • First, I installed a fresh Windows 8.1 installation on a reference computer. I booted in Audit mode by using CTRL + SHIFT + F3, as specified in http://technet.microsoft.com/en-us/library/hh825135.aspx. This is because it says that you need to have only 1 administrator account for CopyProfile to work.
  • For testing purposes, I did these customizations
    — Set taskbar icons to small
    — Install Mozilla Firefox and set custom homepage
  • Ran sysgrep with the arguments /generalize /oobe /unattend:c:\copyprofile.xml (xml file copied below)
  • Restarted same computer, and got in the user customization (OOBE) process. Filled in the details, windows started – Firefox still installed but user data / task bar customisations lost. Custom homepage setting removed, and firefox reset to default settings.

copyprofile.xml

<?xml version="1.0" ?> 
<unattend xmlns="urn:schemas-microsoft-com:unattend">
   <settings pass="windowsPE">

      <component language="neutral" name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <computername>Win8Test</computername>
            <timezone>Eastern Standard Time</timezone>
            <copyprofile>true</copyprofile>
            <disableautodaylighttimeset>false</disableautodaylighttimeset>
            <donotcleantaskbar>true</donotcleantaskbar>
            <showwindowslive>false</showwindowslive>
        </component>
   </settings>
</unattend> 

I would appreciate any kind of help in getting this to work.

Best Answer

This has been solved finally. The issue is simply a matter of case-sensitivity. I formatted the xml document using Visual Studio to get proper indentation, and didn't notice that it changed say from <CopyProfile> to <copyprofile>. I then updated the case as per another sample file, and it worked. The working unattend.xml is copied below:

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.micro...fig/2002/State" xmlns:xsi="http://www.w3.org/20...hema-instance">
            <CopyProfile>true</CopyProfile>
            <DoNotCleanTaskBar>true</DoNotCleanTaskBar>
            <RegisteredOrganization>XXXXXXXXX</RegisteredOrganization>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.micro...fig/2002/State" xmlns:xsi="http://www.w3.org/20...hema-instance">
            <CopyProfile>true</CopyProfile>
            <DoNotCleanTaskBar>true</DoNotCleanTaskBar>
            <RegisteredOrganization>XXXXXXXXX</RegisteredOrganization>
        </component>
    </settings>
    <settings pass="windowsPE">

        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.micro...fig/2002/State" xmlns:xsi="http://www.w3.org/20...hema-instance">

            <UseConfigurationSet>true</UseConfigurationSet>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:c:/users/tech/desktop/install.wim#Windows 8 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

Please note that the offlineImage does not actually need to match an actual file it seems. I don't know exactly why this is needed.

Related Question