나는 응용 프로그램의 설치 프로그램을 작업하고 있습니다. 설치 관리자는 HKEY_CURRENT_USER \ Software \ Company \ AppName 레지스트리 키를 일부 변경 한 다음 응용 프로그램이 처음 실행될 때이 레지스트리 키를 찾습니다. 그런 다음 응용 프로그램은 찾은 레지스트리 키를 기반으로 다른 작업을 수행합니다.Windows 7의 레지스트리 액세스 권한이 상승했습니다
이것은 Windows 7 (그리고 아마도 Vista는 아직 테스트하지 않았습니다)에 사용자 계정 (즉, 관리자가 아닌 사용자)으로 응용 프로그램을 설치하기 전까지 훌륭합니다.
사용자가 응용 프로그램을 설치하려고하면 Windows가 관리자 계정의 자격 증명을 사용합니다. 즉, 레지스트리에서 HKCU를 변경하면 시작하는 사용자의 레지스트리가 아니라 관리자의 레지스트리에 변경됩니다. 따라서 키는 사용자 계정에서 처음 실행될 때 응용 프로그램에 표시되지 않습니다.
설치 프로그램이 설치하는 앱과 통신해야하는 유일한 사람이 될 수 없습니다. 이 작업을 수행하기 위해 안정적으로 레지스트리를 사용할 방법이 없습니까?
앱을 설치 한 후에 사용자가 앱을 실행하는 것에 의존해서는 안되기 때문에 정보를 명령 줄 매개 변수로 전달하는 것은 가능한 해결책이 아닙니다. 필자가 볼 수있는 유일한 방법은 설치 프로그램이 레지스트리 키를 가져 오거나 설정하는 원래 사용자로 유틸리티를 호출하도록하는 것입니다. 이것은 뛰어 내야 할 바보 같은 후프처럼 보인다.
편집 : 응용 프로그램은 키를 사용한 후에 키를 삭제해야하므로 HKEY_LOCAL_MACHINE에 넣을 수 없습니다.
Microsoft는 일반적으로 사용자 설정 및 구성 데이터를 레지스트리에 저장하지 않도록 권장 사항을 수정했습니다.레지스트리에 * 가지고 있지 않은 경우 특수 액세스 권한이 필요없는 XML 또는 INI 파일을 사용하지 않는 이유는 무엇입니까? –
잠깐, 그랬어? 도대체 레지스트리는 무엇입니까? ( – Colen
많은 사람들이 레지스트리가 더 이상 필요하지 않다고 생각합니다. 수년 전에 생각 했었지만 그 유용성이 오래 가지 않았고 그 문제점이 그 혜택을 압도하고있는 것으로 보입니다. 레지스트리는 여전히 사용되지만 사용자 데이터를 덤프하는 응용 프로그램이 아닌 * Windows *에서만 사용하도록되어 있습니다. 그래서 레지스트리의 현대적인 유용성에 대한 몇 가지 다른 질문이 있습니다. 그러나 훨씬 더 많은 잘못된 정보가 떠 다니고 있습니다. UAC 등에서 고려해야 할 사항입니다. –