2009-05-01 6 views
0
try 
{ 
    RegistryKey rkApp = Registry.CurrentUser.OpenSubKey(
     "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 

    if (rkApp.GetValue("AdobeBitmapViewer") == null) 
    { 
     rkApp.SetValue("AdobeBitmapViewer", Application.ExecutablePath.ToString()); 
    } 
    rkApp.Close(); 
} 
catch (Exception) { } 

이 코드는 Windows XP에서 작동하지만 Windows Vista에서는 UnauthorizedException이 발생합니다. Vista의 UAC를 우회하여 레지스트리 키를 설정하는 방법이 있습니까?C#을 사용하여 Windows Vista에서 레지스트리 값을 어떻게 설정합니까?

답변

1

나는 OpenKey와 반대로 CreateKey를 사용한다고 말하는 pages을 보았습니다. 차이가 있습니까?

높은 권한으로 실행해야 할 수 있습니다. 이것은 example 도움이 될 수 있습니다.

another 예를 들어 여기를 참조하십시오.

+0

Registry.CurrentUser에 표고가 필요합니다. – Michael

+0

즉, Registry.CurrentUser에는 필요하지 않습니다. – Michael

+0

ok 예외를 확인하고 누락 된 부분을 확인하십시오. –

1

이것은 UAC 문제가 아니어야합니다. 문제의 핵심은 일반적으로 UAC에 의해 보호되지 않는 HKCU에 있습니다. UAC는 일반적으로 HKLM과 같은 키에 대한 액세스를 제거합니다.

Vista의 프로그램이 왔으며 관리자 권한으로 해당 키를 생성하고 정상적인 상황에서 키 쓰기를 금지 할 수 있습니다. false를 전달하려고 시도 할 수 있습니까 (읽기 전용을 의미)? 그렇다면 키에 대한 실제 사용 권한을 살펴보고 그 사용 권한을 확인해야합니다.

+0

Tom의 코드가 바닐라 Vista 컴퓨터에서 작동하는지 확인할 수 있습니다. – brianpeiris

+0

참고 : AdobeBitmapViewer 키가 내 컴퓨터에 없으므로 키를 실행할 때 키가 만들어졌습니다. – brianpeiris

관련 문제