Nothing wrong with your code. I like working with functions better so maybe something like this...

untested, requires getsessionid()

? clientname()
 Code:
function Clientname()
  select
    case InStr(@PRODUCTTYPE,"Server 2008")
      $ClientName = ReadValue("HKEY_USERS\" + @SID  + "\Volatile Environment\" + getsessionid(),"CLIENTNAME")
    case InStr(@PRODUCTTYPE,"Server 2003")
      $ClientName = ReadValue("HKEY_USERS\" + @SID  + "\Volatile Environment","CLIENTNAME")
    case 1  
      $ClientName = @WKSTA
  endselect
endfunction