C#을 사용하여 프로그래밍 방식으로 레지스트리 값을 읽는 데 문제가 있습니다. 많은 사이트를 조사했지만 도움이되지 않았습니다. 대성 모드로 VS를 실행할 때 레지스트리에 액세스하여 읽을 수 있지만 승격 모드로 VS를 실행하면 문제가 발생합니다. 처음에 나는이 상승 된 모드 괜찮 았는데 아래 코드프로그래밍 방식으로 레지스트리에 액세스하는 중 문제가 발생했습니다.
byte[] val = (byte[])Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\MyServices\\Identity\\ASPNET_SETREG", "ValueName", 0);
시작하지만, 비 상승 모드에 실패합니다. 함수 위에 속성을 배치했습니다.
[RegistryPermissionAttribute(SecurityAction.Demand,Unrestricted=true)]
이것은 도움이되지 않았습니다. 그런 다음 시도했습니다
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.AllFlags)]
여전히 작동하지 않았습니다. 가 지금은
RegistryKey key = Registry.LocalMachine;
RegistrySecurity rs = new RegistrySecurity();
rs = key.GetAccessControl();
string user = "DomainName\\Username";
rs.AddAccessRule(new RegistryAccessRule(user,
RegistryRights.ReadKey,
InheritanceFlags.None,
PropagationFlags.None,
AccessControlType.Allow));
key.SetAccessControl(rs);//Exception: "Attempted to perform an unauthorized operation."}
//RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG");
//RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG", false);
//RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG", RegistryKeyPermissionCheck.ReadSubTree);
RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG", RegistryKeyPermissionCheck.ReadSubTree, RegistryRights.ReadPermissions);
이 SetAccessControl을 언급하고 OpenSubkey 옵션 중 하나를 사용하여 ... 아래의 코드를 시도, 나는 예외를 얻을 : "요청한 레지스트리에 액세스 할 수 없습니다."
나는 괴롭혀 계속 진행할 수 없습니다. 도와주세요
'regedit'을 사용하여 문제의 레지스트리 키로 이동해보십시오. 키를 마우스 오른쪽 단추로 클릭하고 _Permissions_ 옵션을 선택하십시오. – LiquidPony
언급을 잊어 버렸습니다. – Murthy
이상하게도 Creater Owner는 모든 권한이나 읽기 권한을 갖고 있지는 않지만 시스템, 관리자 및 사용자는 모든 권한과 읽기 권한을 가지고 있습니다. 제작자 소유자는 특별한 권한 만 갖고 있습니다. 그래서 클릭 고급 ... 권한 탭에서, 나는 창조주의 소유자에 대한 권한이 하위 키에만 적용되지만, 다른 사람의 권한은이 키와 하위 키에 적용됩니다! 이것은 나를 놀라게한다! – Murthy