나는 다음과 같이 레지스트리에 레지스트리 하위 키 및 해당 값을 기록하려고 :레지스트리가 예상보다 다른 위치에 기록되는 이유는 무엇입니까?
const string subKey = @"SOFTWARE\Apple\Banana\";
const string regKey = "pip";
var rk = Registry.LocalMachine.OpenSubKey(subKey);
if (rk == null)
rk = Registry.LocalMachine.CreateSubKey(subKey);
var rv = rk.GetValue(regKey);
if (rv == null)
rk.SetValue(regKey, "XXX");
return rv.ToString();
이제 문제는 내가 내가 HKLM
폴더 SOFTWARE\Apple\Banana
을 볼 수 없습니다 (regedit를 통해) 직접 위치에서 볼 때이다 .
위의 코드를 다시 실행하고 디버그 할 때 Registry.LocalMachine.OpenSubKey(subKey)
과 rk.GetValue(regKey)
이 모두 이전에 저장된 값을 산출한다는 것을 알 수 있습니다. 그러나 regedit을 통해 주어진 위치의 값을 볼 수 없습니다. 레지스트리를 검색에 그래서, 나는 다음 위치에 위의 키와 값을 볼 수 있습니다 : 나는 구원으로 값이 정확하게 유지하는 모두에서
HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Apple\Banana
HKEY_USERS\S-1-5-21-44266131-1313801407-2392705078-1000\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Apple\Banana
합니다. 그래서
왜 이런 일이 ..이 내 응용 프로그램 내 코드에서 내가
HKLM\SOFTWARE\Apple\Banana\
에서 호출했지만 값을 읽고 곳에서 실감? 액세스 권한 문제와 관련이 있습니까?이 예상되는 동작입니까? 이 점에서 필자는이 값이 매우 중요하므로 자동 재배치와 관련된 위험이 있는지를 아는 것입니다!
그것의 정확한 위치에 남아 있도록 레지스트리에 쓰기의 적절한 방법이 있나요
..
내 계정 관리자이며, 나는 32 비트 윈도우 7
을 사용하고 있습니다 편집 : 내가 알기로, 레지스트리 항목은 HKLM보다는 현재 사용자 위치에 저장됩니다. 다른 계정에서 reg 값을 쿼리 할 때 값을 얻지 못합니다. 모든 HKLM에 저장 :(
댓글에 대한 회신 "그러나 이것은 hklm에서 동일한 위치를 쿼리하는 미래의 사용자가 현재 사용자 위치에있는 값을 얻지 못함을 의미하지 않습니까? 그렇습니다. 어쨌든 테스트 할 것입니다."- 예. 레지스트리의 HLM과 Program Files 및 ProgramData 디렉터리는 설치 중에 만 기록해야합니다. 관리자 만이 다른 곳에서 글을 쓸 수 있습니다 (UAC가 활성화 된 경우 고도가있는 경우에만 가능). –
@DannyVarod 첫 번째 문장을 얻지 못했습니다. 어쨌든 내가 테스트했을 때 모든 사용자가 동일한 레지스트리 값을 원한다면 가상화가 도움이되지 않는다는 사실을 알게되었습니다. – nawfal
Windows 6 이상에서는 설정 데이터 만 저장하도록되어 있으며 다른 위치가 있습니다 런타임에 변경되는 구성 가능한 데이터 또는 데이터를 보유하기위한 것입니다. 설치하는 동안 사용자는 설치 위치에 쓸 수있는 권한이 부여됩니다 (UAC를 통한 관리자 별). 런타임 창에서 사용자가 admin이 아니면 이러한 위치에 대한 액세스가 차단됩니다. (비 관리자는 다른 사용자에게 영향을 미치지 않아야합니다.) –