regsetvalueex 예제

TheGetVersionEx() 함수를 사용하여 응용 프로그램이 운영 체제의 특정 버전에서 실행되고 있는지 여부를 확인하는 경우 원하는 버전 번호보다 크거나 동일한 버전 번호를 확인합니다. 이렇게 하면 이후 버전의 운영 체제에 대한 테스트가 성공합니다. 예를 들어 응용 프로그램에 Windows XP가 필요한 경우 시스템에 설치된 최신 서비스 팩을 나타내는 „서비스 팩 3″과 같이 null 종료된 문자열에 대한 szCSDVersion – 포인터와 같은 다음 테스트를 사용합니다. 서비스 팩을 설치하지 않은 경우 문자열이 비어 있는 것입니다. Windows Me/98/95: 추가 버전 정보를 나타내는 null 종료 된 문자열에 대 한 포인터입니다. 예를 들어 „C“는 Windows 95 OSR2를 나타내고 „A“는 Windows 98 초판을 나타냅니다. 모든 파일 시스템이 생성 및 마지막 액세스 시간을 기록할 수 있는 것은 아니며 모든 파일 시스템이 동일한 방식으로 기록하는 것은 아닙니다. 예를 들어 NT FAT에서 만들기 시간은 10밀리초의 해상도를 가지며, 쓰기 시간은 2초의 해상도를 가지며, 액세스 시간은 1일(실제로 액세스 날짜)의 해상도를 가짐을 가짐입니다. NTFS의 액세스 시간은 1시간의 해상도입니다. 따라서 GetFileTime() 함수는 SetFileTime() 함수를 사용하여 설정된 동일한 파일 시간 정보를 반환하지 않을 수 있습니다. 또한 FAT는 로컬 시간으로 디스크에 시간을 기록합니다. 그러나 NTFS는 UTC의 디스크에 시간을 기록합니다.

위의 방법을 이해하기 위해 예제 코드를 볼 수 있습니다, 아래 의 예에서, 나는 키 „Aticleworld“와 두 값 „날짜“와 „메시지“를 만들었습니다. 위에서 설명한 방법을 사용하여 키에서 저장된 값을 저장하고 읽습니다. wServicePackMajor – 시스템에 설치된 최신 서비스 팩의 주요 버전 번호입니다. 예를 들어 서비스 팩 3의 경우 주 버전 번호는 3입니다. 서비스 팩을 설치하지 않은 경우 값은 0입니다. 그림에서는 프로젝트와 연결된 지정된 파일 확장명을 갖기 위해 만들고 채워야 하는 두 개의 레지스트리 키를 보여 줍니다. 연결을 만드는 실제 루틴은 약 10줄입니다. 아래 코드의 대부분은 주석입니다.

첫 번째 단계는 확장 식별자를 만드는 것입니다(이 코드 예제에서는 확장 `.xxx`를 추가하고 파일 형식에 포인터를 추가하는 것입니다. 그런 다음 파일 형식 항목 자체를 만들고 그 아래에 원하는 셸 명령을 추가하여 다른 작업(열기, 인쇄 등)에 대해 실행합니다. 응용 프로그램은 일반적으로 호출RegEnumValue()를 호출하여 값 이름을 결정한 다음 RegQueryValueEx()를 호출하여 이름에 대한 데이터를 검색합니다. 이 함수를 호출할 때마다 lpcbData 매개 변수가 가리키는 값을 다시 초기화해야 합니다. 이 기능은 다음 코드 예제에서와 같이 루프에서 이 함수를 호출할 때 매우 중요합니다. NT 5(Windows 2000 이상)에 대해 컴파일된 정보입니다. 이제 예제 코드를 볼 시간이라고 생각합니다. 이 예제 코드에서는 키를 만들고 값을 읽고 쓰겠습니다. TheRegOpenUserClassRoot() 함수를 사용하면 대화형 사용자 이외의 사용자에 대해 병합된 HKEY_CLASS_ROOT 정보를 검색할 수 있습니다.

예를 들어 클라이언트/서버 응용 프로그램의 서버 구성 요소는 RegOpenUserServer()를 사용하여 클라이언트에 대해 병합된 정보를 검색할 수 있습니다. 지정된 사용자에 대한 사용자 프로필이 로드되지 않으면 RegOpenUserClassRoot() 가 실패합니다. 사용자가 대화식으로 로그온하면 시스템이 자동으로 사용자의 프로필을 로드합니다. 다른 사용자의 경우 LoadUserProfile() 함수를 호출하여 사용자 프로필을 로드할 수 있습니다. 그러나 LoadUserProfile()은 시간이 많이 소요될 수 있으므로 사용자의 병합HKEY_CLASS_ROOT 정보를 가져야 하는 것이 절대적으로 필요한 경우가 아니면 이 목적을 위해 호출하지 마십시오.