레지스트리 권한 오류 - Cannot edit [Registry key name]: Error writing the value's new contents.
레지스트리 값을 변경하려는 데 다음과 같이 오류가 발생할 수 있습니다.

Cannot edit [Registry key name]: Error writing the value's new contents.
위의 화면은 실제로 "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full" 경로의 "Version" 항목의 값을 변경하려는 데 발생한 오류입니다. 물론, 권한이 없다는 것이므로 사용자에게 권한을 주기 위해 "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full" 노드 자체의 속성 창을 통해 변경을 시도해 보았습니다. 그런데 다음과 같이 오류가 나는 군요. ^^
Unable to save permission changes on Full.
Access is denied.
그렇습니다. 이것은 "TrustedInstaller"에게만 "Full Control"이 설정되어 있습니다. 이 문제를 해결하려면 다음의 "Take Ownership" 방법을 통해 TrustedInstaller에서 현재 로그인한 사용자로 바꿔주는 것입니다.
SYSTEM 또는 TrustedInstaller 소유로 되어 있는 폴더/파일을 삭제하는 방법
; https://www.sysnet.pe.kr/2/0/1519
그런 다음, 다시 원래의 TrustedInstaller로 바꾸고 싶다면 다음의 글에 소개된 방법을 따르면 됩니다. (방법은 같은데, 이름이 "NT SERVICE\TrustedInstaller"라는 점만 주의하면 됩니다.)
[Guide] How to Restore “TrustedInstaller” as Default Owner of a File, Folder or Registry Key in Windows?
; http://www.askvg.com/guide-how-to-restore-trustedinstaller-as-default-owner-of-a-file-or-folder-in-windows/
하지만, 역시나 이렇게 UI를 통해 일일이 수작업으로 바꿔주는 것은 번거로울 수밖에 없습니다. 프로그래밍으로 자동화하고 싶다면 다음의 글에서 소개한 RunasSystem64, RunFromToken64 프로그램의 도움을 받아,
TrustedInstaller 권한으로 프로그램 실행시키는 방법
; https://www.sysnet.pe.kr/2/0/2915
아래와 같은 C# 프로그램을 만들어 인자로 전달하면 됩니다.
using Microsoft.Win32;
using System;
class Program
{
static void Main(string[] args)
{
string path = @"SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full";
try
{
RegistryKey regKey = Registry.LocalMachine.OpenSubKey(path, true);
Console.WriteLine(regKey.GetValue("Version"));
regKey.SetValue("Version", "4.6.00057");
regKey.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
Console.ReadLine();
}
}
어느 쪽이든, 쉽고 빠른 방법을 선택하시면 되겠습니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]