When I first read Microsoft Knowledge Base article 816951, describing that an Office 2003 upgrade doesn't prompt for new user and company information, I was surprised that Microsoft had not described the registry entries, so that a solution could be scripted. When I discovered that the registry entries are binary values storing double-byte characters, I understood why they didn't.

I have scripted MSOfficeNameReg.bat to allow you to set the Company, UserName, and UserInitials. The syntax for using MSOfficeNameReg.bat is:

MSOfficeNameReg "Company Name" "User Name" "User Intials" OK


"Company Name" is the company name you wish to set. Quote marks are required if the name contains spaces.                              "User Name"    is the user name that you wish to set. Quote marks are required if the name contains spaces.                              "User Intials" is the user's initials that you wish to set. Te initials wouldn't normally contain spaces.                              OK             is a call directed environment variable that will contain                                             a Y if the process was successful, or an N if the process failed.
NOTE: MSOfficeNameReg.bat uses Reg.exe from the Windows 2000 Support Tools, or Reg.exe that is built into Windows XP and later.

NOTE: MSOfficeNameReg.bat uses Environment Variable Delayed Expansion.

NOTE: MSOfficeNameReg.bat should work on all versions of office that use the HKEY_CURRENT_USER\Software\Microsoft\Office\<version number>\Common\UserInfo key to store the Company, UserName, and UserInitials REG_BINARY data values. I have tested it with Office 2000 and Office 2002.

MSOfficeNameReg.bat contains:

@echo off                              if \{%4\}==\{\} @echo Syntax: MSOfficeNameReg "Company Name" "User Name" "User Intials" OK&goto :EOF                              setlocal ENABLEDELAYEDEXPANSION                               set MSONR="%TEMP%\MSOfficeNameReg.reg"                              if exist %MSONR% del /q %MSONR%                              set Company=%1                              set UserName=%2                              Set UserInitials=%3                              set Company=%Company:"=%                              set UserName=%UserName:"=%                              set UserInitials=%UserInitials:"=%                              regedit /a %MSONR% "HKEY_CURRENT_USER\Software\Microsoft\Office"                              set UserInfo=N                              for /f "Tokens=*" %%u in ('findstr /i /l /c:\Common\UserInfo\] %MSONR%') do if "!UserInfo!" EQU "N" set UserInfo=%%u                              if %UserInfo% EQU "N" @echo Microsoft Office registry key not found.&endlocal&set %4=N&goto :EOF                              Set ExpKey=%UserInfo:\[=%                              Set ExpKey=%ExpKey:\]=%                              set RegKey=%ExpKey:HKEY_CURRENT_USER=HKCU%                              call :reg1>>nul 2>>&1                              set FNDCONT=N                              for /f "Tokens=*" %%T in ('type %MSONR%') do set line=%%T&call :parse                              if "%FNDCONT%" EQU "Y" call :out                              if exist %MSONR% del /q %MSONR%                              endlocal&set %4=Y                              goto :EOF                              :parse                              set line=%line:"=%                              if /i "%line:~0,4%" EQU "TEMP" goto TMPFND                              if "%FNDCONT%" NEQ "Y" goto :EOF                              if "%line:~0,1%" EQU "\[" call :out&goto :EOF                              set worktmp=%line:,\=%                              if "%worktmp%" EQU "%line%" set work=%work%%worktmp%&call :out&goto :EOF                              set work=%work%%line%                              goto :EOF                              :TMPFND                              if /i "%line:~0,11%" EQU "TEMPUserNam" goto TMPFNDOK                              if /i "%line:~0,11%" EQU "TEMPCompany" goto TMPFNDOK                              if /i "%line:~0,11%" EQU "TEMPUserIni" goto TMPFNDOK                              if "%FNDCONT%" EQU "Y" call :out                              goto :EOF                              :TMPFNDOK                              if "%FNDCONT%" EQU "Y" call :out                              set work=%line:,\=%                              if "%work%" NEQ "%line%" set FNDCONT=Y                              set work=%work:TEMP=%                              set work=%work:hex(7):=%                              if "%FNDCONT%" EQU "Y" goto :EOF                              call :out                              goto :EOF                              :out                              set FNDCONT=N                              if /i "%work:~0,8%" EQU "Company=" set worktmp=%work:~8%&set name=Company&goto output                              if /i "%work:~0,9%" EQU "UserName=" set worktmp=%work:~9%&set name=UserName&goto output                              set worktmp=%work:~13%                              set name=UserInitials                              :output                              call :reg2>>nul 2>>&1                              goto :EOF                              :reg1                              REG ADD "%RegKey%" /v TEMPCompany /t REG_MULTI_SZ /d "%Company%" /F                              REG ADD "%RegKey%" /v TEMPUserName /t REG_MULTI_SZ /d "%UserName%" /F                              REG ADD "%RegKey%" /v TEMPUserInitials /t REG_MULTI_SZ /d "%UserInitials%" /F                              regedit /e %MSONR% "%ExpKey%"                               REG DELETE "%RegKey%" /v TEMPCompany /f                              REG DELETE "%RegKey%" /v TEMPUserName /f                              REG DELETE "%RegKey%" /v TEMPUserInitials /f                              goto :EOF                              :reg2                              set worktmp=%worktmp:,=%                              set worktmp=%worktmp:0000=00%                              set worktmp=%worktmp:0000=00%                              set worktmp=%worktmp:0000=00%                              set worktmp=%worktmp:0000=00%                              set worktmp=%worktmp:0000=00%0000                              REG ADD "%RegKey%" /v %name% /t REG_BINARY /d %worktmp% /F