2012-06-15 2 views
0

내가 다음 레지스트리 키에 액세스하려는 시스템 계정에서 실행 C#을 서비스 실행 해요 :서비스로 실행중인 레지스트리에서 CLSID에 액세스합니다.

\ CLSID를 {8E7FE1EC-79FA-43DF-9452은-B71542599B3C} \있는 InprocServer32이

\ 키가 존재하고 내가 단위 테스트를 잘하고 (단위 테스트를 현재 사용자가 아래에서 실행) 그것을 액세스 할 수 있습니다. 이 서비스는 클래스 루트의 다른 키에 액세스 할 수 있지만 CLSID 하위 키에 액세스하려고하면 실패합니다. HKEY_CLASSES_ROOT 단순히 포인터이기 때문에 내 코드 + regPath '를 열 수 없습니다'반환 CLSID 아래에 아무것도 들어

  var regPermission = new RegistryPermission(RegistryPermissionAccess.AllAccess, 
                 @"HKEY_CLASSES_ROOT\" + regPath); 
      regPermission.Demand(); 
      using (var regKey = rootKey.OpenSubKey(regPath)) 
      { 
       if (regKey != null) 
       { 
        string defaultValue = (string)regKey.GetValue(""); 
        { 
         return defaultValue; 
        } 
       } 
       else 
       { 
        Logger.Info("Unable to open " + regPath);   
       } 
      } 

..

모든 팁이 될 이유에 크게

답변

1

이 일어나고 감사 HKEY_CURRENT_USER\Software\Classes에 로그인하고 noboy가 로그인하면 음 ... 그럼 존재하지 않습니다. 실제 하이브는 HKEY_USERS\{user_guid | .DEFAULT}\Software\Classes에서 찾을 수 있으므로 사용자의 GUID를 알지 못하면 .DEFAULT를 사용해야합니다.

대신 HKEY_LOCAL_MACHINE\Software\Classes을 사용해 볼 수도 있습니다.

+0

방금 ​​시간을 절약 할 수있게되었습니다. 감사 –

관련 문제