2010-12-09 3 views
3

나는 응용 프로그램의 설치 프로그램을 작업하고 있습니다. 설치 관리자는 HKEY_CURRENT_USER \ Software \ Company \ AppName 레지스트리 키를 일부 변경 한 다음 응용 프로그램이 처음 실행될 때이 레지스트리 키를 찾습니다. 그런 다음 응용 프로그램은 찾은 레지스트리 키를 기반으로 다른 작업을 수행합니다.Windows 7의 레지스트리 액세스 권한이 상승했습니다

이것은 Windows 7 (그리고 아마도 Vista는 아직 테스트하지 않았습니다)에 사용자 계정 (즉, 관리자가 아닌 사용자)으로 응용 프로그램을 설치하기 전까지 훌륭합니다.

사용자가 응용 프로그램을 설치하려고하면 Windows가 관리자 계정의 자격 증명을 사용합니다. 즉, 레지스트리에서 HKCU를 변경하면 시작하는 사용자의 레지스트리가 아니라 관리자의 레지스트리에 변경됩니다. 따라서 키는 사용자 계정에서 처음 실행될 때 응용 프로그램에 표시되지 않습니다.

설치 프로그램이 설치하는 앱과 통신해야하는 유일한 사람이 될 수 없습니다. 이 작업을 수행하기 위해 안정적으로 레지스트리를 사용할 방법이 없습니까?

앱을 설치 한 후에 사용자가 앱을 실행하는 것에 의존해서는 안되기 때문에 정보를 명령 줄 매개 변수로 전달하는 것은 가능한 해결책이 아닙니다. 필자가 볼 수있는 유일한 방법은 설치 프로그램이 레지스트리 키를 가져 오거나 설정하는 원래 사용자로 유틸리티를 호출하도록하는 것입니다. 이것은 뛰어 내야 할 바보 같은 후프처럼 보인다.

편집 : 응용 프로그램은 키를 사용한 후에 키를 삭제해야하므로 HKEY_LOCAL_MACHINE에 넣을 수 없습니다.

+0

Microsoft는 일반적으로 사용자 설정 및 구성 데이터를 레지스트리에 저장하지 않도록 권장 사항을 수정했습니다.레지스트리에 * 가지고 있지 않은 경우 특수 액세스 권한이 필요없는 XML 또는 INI 파일을 사용하지 않는 이유는 무엇입니까? –

+0

잠깐, 그랬어? 도대체 레지스트리는 무엇입니까? ( – Colen

+1

많은 사람들이 레지스트리가 더 이상 필요하지 않다고 생각합니다. 수년 전에 생각 했었지만 그 유용성이 오래 가지 않았고 그 문제점이 그 혜택을 압도하고있는 것으로 보입니다. 레지스트리는 여전히 사용되지만 사용자 데이터를 덤프하는 응용 프로그램이 아닌 * Windows *에서만 사용하도록되어 있습니다. 그래서 레지스트리의 현대적인 유용성에 대한 몇 가지 다른 질문이 있습니다. 그러나 훨씬 더 많은 잘못된 정보가 떠 다니고 있습니다. UAC 등에서 고려해야 할 사항입니다. –

답변

3

당신이 원하는 2 개 추천 방법이 있습니다

  1. 은 관리자에게 권한이 필요하지 않습니다 사용자 별 설치를 사용. HKEY_CURRENT_USER를 (를) 사용할 수 있지만 모든 사용자가 제품을 설치하지 않았습니다.

  2. 관리자 권한이 필요한 컴퓨터 별 설치를 사용하십시오. 이 경우 구성 파일에서 설정을 읽도록 응용 프로그램을 다시 설계해야합니다. HKEY_CURRENT_USER는 전역 응용 프로그램 설정이 아닌 사용자 별 설정을 저장할 때만 사용해야합니다.

기본적으로 응용 프로그램이 컴퓨터 단위 인 경우 HKEY_LOCAL_MACHINE 또는 구성 파일을 사용해야합니다. 사용자 단위 인 경우 HKEY_CURRENT_USER를 사용할 수 있습니다. 다른 조합에는 제한이 있으며 필요한 방식으로 작동하지 않습니다.

2

모든 사용자가 응용 프로그램 정보를 사용할 수 있도록하려면 HKEY_LOCAL_MACHINE 하이브를 사용하십시오.

편집 -이 개 대안 :

  • 변경 사용자가이를 편집/ 를 삭제할 수 있도록하는 레지스트리의 보안 키,
  • 사용 (레지스트리 대신에) ProgramData 디렉토리 를 저장하는 자료.
+0

원본 질문에 추가하려면 편집 : 응용 프로그램에서 키를 삭제 한 후에 키를 삭제해야하므로 넣을 수 없습니다. HKEY_LOCAL_MACHINE에 저장하십시오. 그렇지 않으면 좋은 제안입니다. – Colen