드라이브 마운트안된 파티션 내용에 접근과 유의할점.
2019.03.07 09:02
앞서 마운트없이 EFI 파티션에 bcdboot를 수행할수 있다는 글을 올렸는데요
모든 시스템에 인식된 모든 NTFS/FAT 파티션은 마운트에 상관없이 dir 명령으로 접근이 가능합니다.
mountvol 결과 나오는 디바이스 트리 uuid 부터 경로를 적어주면 됩니다.
예 : dir \\?\Volume{ad843443-4ba4-4d58-9122-f5189d69328a}\efi
결과는
\\?\Volume{ad843443-4ba4-4d58-9122-f5189d69328a} 드라이브의 볼륨: system
볼륨 일련 번호: 0EC0-0A96
\\?\Volume{ad843443-4ba4-4d58-9122-f5189d69328a}\efi 디렉터리
2019-02-23 오전 05:04 <DIR> .
2019-02-23 오전 05:04 <DIR> ..
2019-02-23 오전 05:04 <DIR> Microsoft
2019-02-23 오전 05:04 <DIR> Boot
0개 파일 0 바이트
4개 디렉터리 76,914,688 바이트 남음
이렇게 잘 나오네요. (내용은 관리자권한일때만 보여짐...)
따라서 bcdedit /store ... 에서도 위 디바이스 트리로부터 BCD 경로를 적어주면 됩니다.
그런데 bcdboot /s 에서는 위의 디바이스 트리 외에 \Device\HarddiskVolume# 형식도 지원하고 (#은 번호)
그냥 # 번호만 써줘도 되는데 중요한건 이때 # 번호가 diskpart의 list vol 에서 나오는 볼륨번호와는 전혀 별개 입니다.
즉 diskpart list vol 의 숫자는 임의로 나열순서를 써놓은것일뿐 디바이스 트리와는 전혀 별개이기에 조심해야 합니다.
디바이스트리 의 볼륨은 0 이 아닌 1부터 시작하느것부터 다릅니다.
\Device\HarddiskVolume 형식의 볼륨값은 파워쉘에서 다음의 코드를 봍여넣기 하면 나오지만
마운트 안된것은 나오지가 않습니다.
$DynAssembly = New-Object System.Reflection.AssemblyName('SysUtils')
$AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run)
$ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('SysUtils', $False)
# Define [Kernel32]::QueryDosDevice method
$TypeBuilder = $ModuleBuilder.DefineType('Kernel32', 'Public, Class')
$PInvokeMethod = $TypeBuilder.DefinePInvokeMethod('QueryDosDevice', 'kernel32.dll', ([Reflection.MethodAttributes]::Public -bor [Reflection.MethodAttributes]::Static), [Reflection.CallingConventions]::Standard, [UInt32], [Type[]]@([String], [Text.StringBuilder], [UInt32]), [Runtime.InteropServices.CallingConvention]::Winapi, [Runtime.InteropServices.CharSet]::Auto)
$DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String]))
$SetLastError = [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError')
$SetLastErrorCustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('kernel32.dll'), [Reflection.FieldInfo[]]@($SetLastError), @($true))
$PInvokeMethod.SetCustomAttribute($SetLastErrorCustomAttribute)
$Kernel32 = $TypeBuilder.CreateType()
$Max = 65536
$StringBuilder = New-Object System.Text.StringBuilder($Max)
Get-WmiObject Win32_Volume | ? { $_.DriveLetter } | % {
$ReturnLength = $Kernel32::QueryDosDevice($_.DriveLetter, $StringBuilder, $Max)
if ($ReturnLength)
{
$DriveMapping = @{
DriveLetter = $_.DriveLetter
DevicePath = $StringBuilder.ToString()
}
New-Object PSObject -Property $DriveMapping
}
}
저는 다음과 같이 나오는데
DevicePath DriveLetter
---------- -----------
\Device\HarddiskVolume2 C:
\Device\HarddiskVolume3 A:
\Device\HarddiskVolume5 Z:
\Device\HarddiskVolume6 B:
여기서 빠진 Volume 1과 Volume 4가 EFI 파티션 입니다. (diskpart list vol 에서는 전혀 다른 순서와 값이 나옴)
이 형식은 dir로 출력은 안되며 다소 고전적인 포맷이라 여겨지며 이유는 위에서 설명드린대로 볼륨순번이 중구난방 이기에
mountvol에서 얻은 \\?\Volume{uuid} 형식이 정상적인 포맷으로 간주되어 잘 쓰이는것 같습니다.
댓글 [1]
-
왕초보 2019.03.07 09:41
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 자유 게시판 이용간 유의사항 (정치, 종교, 시사 게시물 자제) [1] | gooddew | - | - |
46034 | 저장장치 용량 잡아먹는 하마를 아시나요? [10] | 오호라7 | 1340 | 07-12 |
46033 | 피프티 피프티.. [4] | 테츠로 | 764 | 07-12 |
46032 | 이강인 진짜 대단해 보이네요. | 도뽱 | 471 | 07-12 |
46031 | 얼마전에 엘리베이터에 갇혔다 구출 후기 [2] | 뷰리풀투데 | 519 | 07-12 |
46030 | 키보드 DIY | 뷰리풀투데 | 425 | 07-12 |
46029 | 무료 축의금 관리 프로그램 (모바일전용) | 록시2 | 662 | 07-12 |
46028 | tmap '우회전 보행자 알림' 서비스 개시 [5] | asklee | 705 | 07-12 |
46027 | (결정)둘 중에서 사용한다면 어떤방법이 좋을까요? [64] | 집앞의_큰 | 941 | 07-11 |
46026 | 간절한 소원들어주기 [24] |
|
925 | 07-11 |
46025 | 백신 필요 하신분---eset 50% sale 중입니다. [8] | 블루미르 | 892 | 07-10 |
46024 | 지인 분이 하나 더 주고 가셨는데요. [10] | 윈도우៖ | 1109 | 07-10 |
46023 | 요즘 공무원들 일처리 하는거보면 [13] | 소녀시대 | 720 | 07-10 |
46022 | esim 데이터로밍 쓸 떄는 esim비용이 없네요 [2] | birdtree | 193 | 07-10 |
46021 | "이지윈포 편집 도우미" 현재 0710 03:00 [30] |
|
501 | 07-10 |
46020 | [고전] 소오강호 2013 OST (유소사) [1] | 메인보드 | 652 | 07-10 |
46019 | 영화 콘크리트 유토피아 [1] | ʕ·ᴥ·ʔ | 1220 | 07-09 |
46018 | 연구자분들을 위한 "이지윈포 편집 도우미" 현황... [8] |
|
499 | 07-09 |
46017 | 견적 문의(컴퓨터) [1] | bsj00 | 817 | 07-09 |
46016 | 이지윈포 업데이트 주안점 안내 [29] |
|
618 | 07-09 |
46015 | 단상. 의사 간에도 격차는 분명히. [7] | 뷰리풀투데 | 361 | 07-09 |
귀한 정보를 알려주셔서 감사합니다..
파워셀은 한번도 사용해본적이 없습니다만..능력이...막강하네요..
오늘 하루도..좋은일만 있으시길 바랍니다..