As Jens said, it is the classic confusion about whether it is the *value name* or *value data* that is being sought after.

My read on it is that it is the existence of the value name that the OP is looking for. Using ReadValue() on a non-existing value will throw @Error so @Error can be checked and used like a *ValueExist* function. I fail to see the need to iterate through a loop of all values as Glenn claims as being the right way.
 Code:
Break on
$SO = SetOption('NoMacrosInStrings','on')
$Values = 'foo','CacheAge'
For Each $Value in $Values
  $RC = ReadValue('HKEY_CURRENT_USER\Software\KiXtart\TokenCache',$Value)
  If @Error
    '@Error [' + @Error +']' ?
    "Value " + $Value + " doesn't exist" ?
  Else
    '@Error [' + @Error +']' ?
    "Value " + $Value + " is there!" ?
  EndIf
Next
_________________________
Give a man a fish and he will be back for more. Slap him with a fish and he will go away forever.