Warum sollte eine Exception ausgelöst werden? Du gibst die Anweisung einen Registryschlüssel (Software\ProcessData\1.0) zu öffnen und anzulegen, wenn dieser noch nicht existiert.
Danach liest du einen Wert in diesem Schlüssel aus, wobei ReadString laut Hilfe einen leeren String zurückgibt, wenn der Wert noch nicht existiert.
Eine Exception würde laut Hilfe nur augelöst, wenn der Wert existiert, aber kein String ist.
Also wo erwartest du eine Exception?
Wenn du wissen willst, ob der Schlüssel existiert, warum ignorierst du dann den Rückgabewert von OpenKey und warum sagst du bei OpenKey, dass der Schlüssel angelegt werden soll, wenn er noch nicht existiert?
Außerdem reicht ein Blick in die Hilfe (oder in die Liste der Möglichkeiten bei der Syntaxergänzung) um festzustellen, dass es die Funktionen KeyExists und ValueExists gibt. Was die machen, sollte der Name ja sagen...