Скорее всего, у вас есть проблема правописания для вызова SystemRestoreStatus, что вызывает исключение в следующей строке:
string sysRestore = rkSubKey.GetValue(keyName).ToString();
Если вы не уверены, существует ли значение или нет, вы можете изменить эту строку на:
string sysRestore = rkSubKey.GetValue(keyName) as string;
и затем проверьте, является ли строка нулевой или пустой, прежде чем пытаться ее использовать.
Обновление
Другая возможность заключается в том, что вы выполняете код из 32-разрядного приложения в 64-разрядной ОС. В этом случае .Net услужливо перенаправляет ваш запрос на
SOFTWARE\Wow6432Node\Microsoft\...
узел вместо.
Вы можете обойти эту проблему, используя RegistryKey.OpenBaseKey , используя RegistryView.Registry64 в качестве второго параметра.