C를 사용하여 레지스트리를 편집하는 프로그램을 작성 중입니다. #사용자에게 레지스트리 편집 권한이 있는지 확인하십시오.
프로그램을로드 할 때 편집 권한이 있는지 확인하고 싶습니다. C#으로 체크인하는 가장 좋은 방법은 무엇입니까?
C를 사용하여 레지스트리를 편집하는 프로그램을 작성 중입니다. #사용자에게 레지스트리 편집 권한이 있는지 확인하십시오.
프로그램을로드 할 때 편집 권한이 있는지 확인하고 싶습니다. C#으로 체크인하는 가장 좋은 방법은 무엇입니까?
쓰기 권한으로 RegistryKey
을 열어 봅니다. Exception
이 있으면 사용 권한이 없습니다. 권한이 없다고 말하는 특정 예외에 대해 특정 할 수도 있습니다.
레지스트리의 각 노드에는 자체 ACL (액세스 자격 증명 목록)이 있습니다. 하나의 권리는 없습니다.
일반적으로 각 응용 프로그램에는 HKLM 하이브 또는 HKCU 하이브 또는 둘의 조합에 자체 레지스트리 노드가 있습니다.
전자의 경우 사용자는 컴퓨터의 관리자 여야하며, 후자의 경우 사용자는 자신의 레지스트리를 읽고 쓸 수 있습니다.
실제 액세스 권한을 확인하려면 RegistryKey.GetAccessControl
method을 사용할 수 있습니다.
그러나 명시된 바와 같이이 메서드를 호출하려면 적어도 읽기 권한이 있어야합니다.
내가하고있다 var temp = registryKey.GetAccessControl(); 하지만 임시적으로 읽거나 쓰는 것에 가치가 있지 않습니까? –
var temp = registryKey.GetAccessControl(). AccessRightType –
사용자는 "전체 레지스트리"를 편집 할 수있는 권한이 없어야하며 레지스트리 내의 특정 키를 편집 할 수있는 권한 만 있으면됩니다.
당신은 시도 캐치 시스템
try{
// Do registry edit
}
catch {
Console.Log("Sorry you don't have permission to edit this key");
}
각 사용자가 다른 어떤 부분, 모든 부분 또는 윈도우 ACL을 사용하여 레지스트리의 어떤 부분에 액세스 할 수 있습니다 일을 가장 좋은 것입니다.
여기에서 first answer을 확인하십시오.
try{
Registry.CurrentUser.OpenSubKey(@"PATH\TO\STUFF", true);
// Have write permissions.
}
catch {
// Do not have write permissions.
}
의
가능한 중복 [C#에서 레지스트리 쓰기 권한을 얻는 방법] (http://stackoverflow.com/questions/721145/how-to-get-registry-write-permissions-in-c-sharp) –