ใน .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 คือข้อมูลที่ยังไม่ได้ขยาย