R – Updating the default font in outlook 2002

outlookvbscript

I have been asked to create a vbscript that will set the default font for users in Outlook 2002. I have got some code that alters three registry keys and is supposed to update the font details. The keys are being updated in the registry but have no effect on Outlook, I have restarted outlook and rebooted the machine and the font remains unchanged. The code I am using is below, any help would be gratfully received

Dim strValue
Dim strKey
Set oshell = CreateObject("WScript.Shell")

strValue = "3c,00,00,00,0f,00,00,e8,00,00,00,40,c8,00,00,00,4a,04,03,00,00,00,00,00,00,20,54,72,65,62,75,63,68,65,74,20,4d,53,00,00,00,00,00,00,00,00,00,00,f0,db,66,34,2c,eb,13,00,01,00,00,00"
strkey = "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\MailSettings\ComposeFontSimple"
oshell.RegWrite strKey,strValue,"REG_BINARY"

strValue = "3c 00 00 00 0f 00 00 e8 00 00 00 00 c8 00 00 00 4a 04 03 00 00 00 ff 00 00 20 54 72 65 62 75 63 68 65 74 20 4d 53 00 00 00 00 00 00 00 00 00 00 f0 db 66 34 2c eb 13 00 01 00 00 00"
strkey = "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\MailSettings\ReplyFontSimple"
oshell.RegWrite strKey,strValue,"REG_BINARY"

strValue = "3c 00 00 00 0f 00 00 e8 00 00 00 40 c8 00 00 00 4a 04 03 00 00 00 00 00 00 20 54 72 65 62 75 63 68 65 74 20 4d 53 00 00 00 00 00 00 00 00 00 00 f0 db 66 34 2c eb 13 00 01 00 00 00"
strkey = "HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\MailSettings\TextFontSimple"
oshell.RegWrite strKey,strValue,"REG_BINARY"

Best Solution

I've found the solution. I had to use another object and convert the string values into hex values in order to write binary values into the registry field as below.

HKEY_CURRENT_USER = &H80000001
strComputer = "."

Set ObjRegistry = _
    GetObject("winmgmts:{impersonationLevel = impersonate}!\\" _
    & strComputer & "\root\default:StdRegProv")

strPath = "Software\Microsoft\Office\10.0\Common\MailSettings\"

Set objRegistry = _
   GetObject("Winmgmts:root\default:StdRegProv")

uBinary = Array(&H3c,&H00,&H00,&H00,&H0f,&H00,&H00,&He8,&H00,&H00,&H00,&H40,&Hc8,&H00,&H00,&H00,&H4a,&H04,&H03,&H00,&H00,&H00,&H00,&H00,&H00,&H20,&H54,&H72,&H65,&H62,&H75,&H63,&H68,&H65,&H74,&H20,&H4d,&H53,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hf0,&Hdb,&H66,&H34,&H2c,&Heb,&H13,&H00,&H01,&H00,&H00,&H00)

uBinaryReply = Array(&H3c,&H00,&H00,&H00,&H0f,&H00,&H00,&He8,&H00,&H00,&H00,&H00,&Hc8,&H00,&H00,&H00,&Ha0,&H02,&H0e,&H00,&H00,&H00,&Hff,&H00,&H00,&H20,&H54,&H72,&H65,&H62,&H75,&H63,&H68,&H65,&H74,&H20,&H4d,&H53,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&Hf0,&Hdb,&H66,&H34,&H2c,&Heb,&H13,&H00,&H01,&H00,&H00,&H00)

Return = objRegistry.SetBinaryValue(HKEY_CURRENT_USER, _
   strPath, _
   "ComposeFontSimple", _
   uBinary)

Return = objRegistry.SetBinaryValue(HKEY_CURRENT_USER, _
   strPath, _
   "ReplyFontSimple", _
   uBinaryReply)

Return = objRegistry.SetBinaryValue(HKEY_CURRENT_USER, _
   strPath, _
   "TextFontSimple", _
   uBinary)
Related Question