في .Net 1.x، عند استخدام أسلوب GetValue لفئة Microsoft.Win32.RegistryKey لقراءة بيانات التسجيل، تتم "معالجة" البيانات فعليًا؛
على سبيل المثال، القيمة الأصلية لبيانات سلسلة معينة هي
%SystemRoot%System32IoLogMsg.dll
لكن البيانات التي تم الحصول عليها باستخدام طريقة GetValue هي
C:WINDOWSSystem32IoLogMsg.dll
بمعنى آخر، عند قراءة السلسلة الموجودة في السجل، سيقوم النظام بتوسيع متغيرات البيئة نيابةً عنك بمبادرة منه.
وهذا يوفر علينا مشكلة استدعاء الأسلوب Environment.ExpandEnvironmentVariables، ولكن على العكس من ذلك، عندما نريد نسخ سلسلة تسجيل سليمة، فإننا لا حول لنا ولا قوة.
في .Net2.0، فوجئنا بسرور عندما وجدنا أن فئة Microsoft.Win32.RegistryKey بها تغيير بسيط، أي أنه تمت إضافة حمل زائد جديد إلى أسلوب GetValue الخاص بها:
كائن عام GetValue (
اسم السلسلة,
القيمة الافتراضية للكائن،
خيارات RegistryValueOptions
) المعلمة الثالثة لهذه الطريقة هي التعداد، والقيمة المفيدة الوحيدة حاليًا هي DoNotExpandEnvironmentNames.
حدد هذه القيمة، والنتيجة التي حصل عليها GetValue هي البيانات التي لم يتم توسيعها.