문제

설치 프로젝트를 유지하려고 합니다. Visual Studio 2003 (예, 레거시 애플리케이션입니다).현재 우리가 겪고 있는 문제는 레지스트리 항목을 작성해야 한다는 것입니다. HKCU 컴퓨터의 모든 사용자에 대해.그들은에 있어야합니다 HKCU 오히려 HKLM 이는 기본 사용자 설정이고 사용자별로 변경되기 때문입니다.내 느낌은 그래요

  1. 이건 불가능해요
  2. 이는 설치 프로그램이 수행해야 하는 작업이 아니지만 응용 프로그램이 수행해야 하는 작업입니다(결국 설치 후 사용자 프로필이 생성되면 어떤 일이 발생합니까?).

이를 염두에 두고 저는 여전히 애플리케이션에서 가능한 한 최소한의 변경을 원하므로 제 질문은 다음과 같습니다. 모든 사용자에 대해 레지스트리 항목을 추가하는 것이 가능합니까? Visual Studio 2003 설정 프로젝트?

그리고 현재 프로젝트에는 5개의 레지스트리 루트 키(HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, 및 사용자/머신 하이브).나는 사용자 루트 키에 대해 전혀 모르고 사용자/머신 하이브를 본 적이 없습니다.누구든지 그것이 무엇인지 나에게 알려줄 수 있습니까?아마도 그들은 위의 문제를 해결할 수 있을 것입니다.

도움이 되었습니까?

해결책

첫 번째:예, 이는 귀하가 지정한 정확한 이유로 인해 애플리케이션에 속하는 것입니다.새 사용자 프로필이 생성된 후에는 어떻게 되나요?물론, 도메인을 사용하는 경우 생성 시 레지스트리에 일부 항목을 넣을 수 있지만 이는 실제로 사용 사례는 아닙니다.애플리케이션은 보기가 있는지 확인하고 없으면 기본 설정을 사용해야 합니다.

즉, HKEY_USERS Hive를 통해 다른 사용자 키를 변경할 수 있습니다.

저는 Visual Studio 2003 설치 프로젝트에 대한 경험이 없으므로 다음은 어디를 봐야 할지 알 수 있는 약간의(완전히 관련 없는) VBScript 코드입니다.

const HKEY_USERS = &H80000003
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = ""
objReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing"
For Each subkey In arrSubKeys
    objReg.SetDWORDValue HKEY_USERS, subkey & strKeyPath, "State", 146944
Next

(코드 제공: Jeroen Ritmeijer)

다른 팁

나는 당신이 모든 사용자에 대해 설정하기를 원하기 때문에 아마도 도메인에서 실행되는 일종의 공유 컴퓨터에 있다고 추측합니다.

여기 드래곤이 있어요

Joe와 Jane이 정기적으로 컴퓨터에 로그온하면 각각 '레지스트리'가 있게 됩니다.

그런 다음 앱을 설치하면 설치 프로그램이 거대한 해킹과 역겨운 것들을 사용하여 HKCU에 항목을 설정합니다.

그런 다음 Bob이 와서 로그온합니다(그와 다른 500명의 사람들이 도메인에 계정을 갖고 있으므로 이 작업을 수행할 수 있습니다).그는 이전에 이 컴퓨터를 사용한 적이 없으므로 레지스트리가 없습니다.그가 처음 로그인하면 Windows가 그를 생성하지만 그는 귀하의 설정을 갖지 않습니다.

그런 다음 앱이 넘어지거나 잘못 작동하며 Bob은 통합된 raynixon의 형편없는 제품에 대해 큰 소리로 불평합니다.

정답은 앱에 몇 가지 기본 설정을 두는 것입니다. 이를 찾지 못하면 레지스트리에 쓸 수 있습니다.어쨌든 앱이 레지스트리에 의존해서는 안 되며, HKCU뿐만 아니라 모든 레지스트리 항목에 대해 필요에 따라 항목을 생성해야 하는 것이 일반적인 모범 사례입니다.

그럼에도 불구하고 MSDN 기사 MSDN 기사 아카이브 User/Machine Hive에 대해 말하면 HKEY_USERS에 쓰지 않습니다.오히려 Just Me를 선택하면 HKCU에 쓰고, 모두를 선택하면 HKLM에 씁니다.

따라서 내 솔루션은 User/Machine Hive를 사용한 다음 애플리케이션에서 레지스트리 항목이 HKCU에 있는지 확인하고 그렇지 않은 경우 HKLM에서 복사하는 것입니다.나는 이것이 가장 이상적인 방법이 아닐 수도 있다는 것을 알고 있지만 변경 사항이 가장 적습니다.

MSDN에 있는 이 항목을 사용하여 솔루션을 진행하는 중입니다(이전에 어떻게 찾을 수 없었는지 모르겠습니다).

사용자/머신 하이브
이 하이브 아래에 입력된 하위 키와 값은 사용자가 "Just Me" 또는 HKEY_USERS 하이브를 선택하거나 설치 중에 "Everyone"을 선택할 때 HKEY_CURRENT_USER 하이브 아래에 설치됩니다.

레지스트리 편집기 MSDN 기사 아카이브

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top