2010-07-29 2 views
1

XP에서 작성된 프로그램이 있습니다. 내가 알아 낸 점은 HLKM이 비 관리자가 더 이상 쓰기 가능하지 않기 때문에 Win7에서 제대로 작동하지 않는다는 것입니다.Windows 7 레지스트리로 사용자간에 데이터 공유

기본적으로 프로그램을 등록 할 때 라이센스 정보는 레지스트리에 저장됩니다. 이 정보는 한 명의 사용자가 아닌 모든 사람이 사용할 수 있으므로 HKCU에 넣고 싶지 않습니다. 그러나 프로그램의 모든 사본은 웹 서버에서 업데이트 된 라이센스 정보를 얻으려고 할 때 특정 상황이 있기 때문에 (예 : 관리자가 아닌 경우) 해당 레지스트리를 편집 할 수 있어야합니다 (관리자가 아닌 관리자 일지라도). 레지스트리 데이터가 손실 또는 손상되었거나 현재 라이센스가 만료되어 확장을 적용했는지 확인해야하는 경우).

프로그램을 시작한 모든 고유 사용자에 대해 웹 서버로 나가면 문제가되지 않지만 일부 성가신 문제가 발생하므로 XP에서했던 것처럼 계속 작동합니다. 레지스트리에 데이터를 저장하고 Win7에서 공유하는 방법이 있습니까? 아니면 드라이브에 INI 파일을 저장하는 것으로 시작해야합니까?

답변

0

모든 사람이 레지스트리의 특정 영역을 쓰기 가능하게 만들 수 있습니까? 어쨌든 설치 관리자는 권한 상승 권한으로 실행해야합니다. 따라서 이것은 이상적인 접근 방법입니다.

+0

이 방법이 효과적 일 수 있지만 이상적인 방법이라고하지는 않습니다. HKLM의 라이선스 정보는 권한이없는 사용자에 의한 변경에 취약합니다. 이상적으로는 앱에 설치된 EXE 및 DLL만큼 강력한 라이선스 정보를 보호하고 싶습니다. 케이트 그레고리 (Kate Gregory)가 제안한 접근 방식은 그 목표를 달성 할 것입니다. –

+0

사실 이것은 내가 다루고있는 문제 중 하나에 대해 잘 작동 할 것입니다. HKLM의 일부를 사용자가 쓸 수 있도록 설치 프로그램에 알리는 방법은 무엇입니까? – Escher

1

다음은 어떻게 설계 할 것인가입니다 : 설치가 상승되어 키를 설정합니다. 그런 다음 라이센스가 손상된 경우에는 "라이센스 수정"또는 "라이센스 갱신"과 같은 텍스트가있는 단추 또는 메뉴 항목을 사용할 수 있습니다. 그 버튼이나 메뉴 항목에 방패를 놓습니다. 사용자가 클릭하면 ShellExecute를 사용하여 별도의 exe를 시작합니다. 그 exe는 고도가 필요한 명단이 있습니다. 그런 다음 레지스트리의 보호 영역에 쓸 수 있습니다. 앱의 나머지 부분은 asInvoker로 매니페스트를 가질 수 있습니다.

완전히 보이지 않게하려면 전체 앱이 항상 고가 (성가신) 상태로 실행되어야하며, 그렇지 않은 경우 앱에서 경고없이 고도를 묻는 다른 exe를 실행하기도합니다. 스마트 사용자는 아니요라고 대답합니다. 약간의 투명성은 좋은 것입니다.

+1

UAC 메커니즘을 사용하여 권한이 부여되지 않은 사용자 (또는 불량 프로그램)가 변경 한 내용으로부터 설치된 실제 실행 파일만큼 HKLM에서 라이센스 정보를 안전하게 유지하기 때문에이 방법이 가장 좋습니다. –