2013-06-12 2 views
1

Windows Vista +에서 BCD 부팅 데이터는 HKEY_LOCAL_MACHINE\BCD00000000 아래의 레지스트리에 저장됩니다. BCDEDIT 명령 줄 도구는 해당 데이터를 읽을 수있는 방식으로 표시합니다.Windows 8에서 프로그래밍 방식으로 BCD 저장소를 편집 하시겠습니까?

이론적으로 관리자로 실행되는 사용자 프로그래밍 응용 프로그램은 BCDEDIT.EXE와 같은 방식으로 해당 저장소를 편집 할 수 있어야합니다. 맞습니까? 내가 (관리자 계정)이 실행할 때

그러나

DWORD result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("BCD00000000\\Objects\\..."), 0, KEY_SET_VALUE, &hKey);

는, 결과의 값은 0x5입니다 (액세스가 거부).

여기에 누락 된 것이 있습니까? 아니면 BCDEDIT를 호출하지 않고 프로그래밍 방식으로 BCD 데이터를 편집 할 수있는 응용 프로그램을 작성할 수있는 방법이 있습니까? 편집 윈도우의

답변

3

유일한 방법은 두 가지 프로그램입니다 BCD : WMI BCD 프로 바이더 인터페이스 (특수 WMI 기능과 BCD 액세스를위한 객체) 를 사용

  1. 스크립팅 BCDEDIT (아닌 실제 프로그래밍 방식)

BCD는 레지스트리 파일 형식으로 저장되며 "시스템"BCD는 HKLM \ BCD00000000에 매핑됩니다.

BCD는 개체 (로더/응용 프로그램, 설정, 장치 개체)의 모음입니다.

BCD 개체의 구조가 꽤 복잡 할 수 있으므로 (예 : vhd 로더) BCD 개체의 편집은 위에서 언급 한 방법을 사용하지 않는 경우 일반적으로 불가능합니다.

BCD WMI 공급자를 프로그래밍 방식으로 사용하는 도구의 예는 Visual BCD Editor - 완전한 BCD 편집기입니다 (다른 BCD 도구는 BCD의 일부만 편집 할 수 있고 단순한 개체는 편집 할 수 있지만 더 복잡한 개체는 실패합니다).

BCD의 탐색은 BCD에서 가장 복잡한 구조가 장치 요소 (모든 로더의 일부)임을 보여줍니다. 정확한 요소가 알려져 있지 않거나 WMI BCD Provider의 잘 정의 된 액세스 기능을 사용하지 않으면 장치 요소가 참 개체이며 편집이 불가능합니다.

관련 문제