Well I have to disagree on this. Taking the EXACT code from JWisham and running it works for me. In this case the expected value in the registry is an integer however I'm certain it will take a string just fine so if it's not working I have to assume that something else is at play here.
I'm sure some of you other guys that might have more time to review it can track it down, but I've got some other projects I have to get done.

Even modifying his code a little it still works for me.

 Quote:
Variable types
In KiXtart, variables are always of one fundamental data type: Variant. The current implementation of KiXtart uses three types of variants: long integers, doubles (8-byte floating point numbers) and strings. A variant of type string can contain up to 32,000 characters. Integer variables can contain any value between 2,147,483,648 and 2,147,483,647. The type of a variable is automatically changed to the result of the expression that is assigned to it. This means that if you assign a string to a variable containing an integer, the type of the variable is changed to a string.

Works fine for me.
 Code:
$RC = WriteValue('HKCU\Software\Microsoft\Internet Explorer\PhishingFilter', 'Enabled', 2, REG_DWORD)

Also works fine
 Code:
$RC = WriteValue('HKCU\Software\Microsoft\Internet Explorer\PhishingFilter', 'Enabled', '2', REG_DWORD)

Notice that even though normally you "should" put quotes on the REG_DWORD KiX is forgiving enough to allow it with no quotes, but I believe that to be an undocumented method in KiX.