2015-01-09 5 views
0

현재 내 표준 오디오 장치를 내 USB 헤드셋에서 스피커로 변경하는 작은 프로그램을 만들고 있습니다. Regshot을 사용하여 오디오 장치를 수동으로 전환하여 변경된 레지스트리 키를 찾은 후 내 스피커 및 헤드셋의 바이너리 코드를 확인할 수있었습니다.레지스트리 값 변경 오류 (개체 참조가 개체 인스턴스로 설정되지 않음)

static void Main(string[] args) 
    { 
     RegistryKey standarddevice = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Render\\{02b3c792-0c05-486c-be02-2ded778dc236}", true); 
     standarddevice.SetValue("Role:0", "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
     standarddevice.SetValue("Role:1", "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
     standarddevice.SetValue("Role:2", "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
    } 

문제점, 해결하기 I'am 수 없습니다, 나는이 오류 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다"얻을 것입니다.

+0

가능한 중복 (http://stackoverflow.com/questions/4660142/what-is-a- nullreferenceexception-and-how-do-i-fix-it) – pmcoltrane

답변

0

그것은 지정된 키가 존재하지 않기 때문에 가장 가능성이 높습니다. 문서 밖으로

확인하십시오 Open 작업이 실패 할 경우 http://msdn.microsoft.com/en-us/library/z9f66s0a(v=vs.110).aspx

  • OpenSubKeynull를 반환합니다.

는이 문제를 해결하려면, 당신은 아마도, 널 (null)를 확인하고 적절한 일을해야합니다

RegistryKey standarddevice = Registry.LocalMachine.OpenSubKey(
    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Render\\" + 
    "{02b3c792-0c05-486c-be02-2ded778dc236}", true); 

if (standardDevice != null) 
{ 
    standarddevice.SetValue("Role:0", 
     "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
    standarddevice.SetValue("Role:1", 
     "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
    standarddevice.SetValue("Role:2", 
     "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
} 

당신이 키가 실제로 않습니다 존재하는 것을 볼 경우가 있다면, 그것은 Wow6432Node에서 가능성입니다 64 비트 컴퓨터. 이 경우 당신은 같은 것을 시도 할 수 있습니다 : [? 나는 그것을 해결 어떻게 NullReferenceException이이고 무엇]의

RegistryKey standarddevice = Registry.LocalMachine.OpenSubKey(
    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Render\\" + 
    "{02b3c792-0c05-486c-be02-2ded778dc236}", true); 

if (standardDevice == null) 
{ 
    standarddevice = Registry.LocalMachine.OpenSubKey(
     "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\" + 
     "Audio\\Render\\{02b3c792-0c05-486c-be02-2ded778dc236}", true); 
} 

if (standardDevice != null) 
{ 
    standarddevice.SetValue("Role:0", 
     "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
    standarddevice.SetValue("Role:1", 
     "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
    standarddevice.SetValue("Role:2", 
     "DF 07 01 00 04 00 08 00 16 00 01 00 14 00 55 01", RegistryValueKind.Binary); 
} 
관련 문제