내 목표는 Windows가 활성 디스크 파티션에 설치되어 있는지 확인하는 것입니다. 나는 윈도우의 경로를 얻을 수 있습니다Windows 파티션이 경로로 활성화되어 있는지 확인하는 방법은 무엇입니까?
C:\WINDOWS
을 한 후 파티션입니다 :
\Device\Harddisk4\Partition4
그러나이 파티션이 활성 상태 인 경우 문제는 방법을 알고있다?
내 목표는 Windows가 활성 디스크 파티션에 설치되어 있는지 확인하는 것입니다. 나는 윈도우의 경로를 얻을 수 있습니다Windows 파티션이 경로로 활성화되어 있는지 확인하는 방법은 무엇입니까?
C:\WINDOWS
을 한 후 파티션입니다 :
\Device\Harddisk4\Partition4
그러나이 파티션이 활성 상태 인 경우 문제는 방법을 알고있다?
확인이 링크 (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365451(v=vs.85).aspx)
PARTITION_INFORMATION는 BootIndicator있다. 하지만 실행중인 윈도우가 해당 파티션으로 부팅되었다는 보장은 없습니다.
편집 됨 이것은 Windows7에서 테스트 된 예제 함수입니다. 나는 '활성화'파티션이 당신의 목표가 아니라고 생각합니다. '정품 인증'은 부팅 가능한 USB 장치와 같은 의미입니다. 나는 WMI를 싫어하지만 당신이 내게 묻는 괜찮다면, 왜 내가`경우 다음을 사용할 것이다 (http://msdn.microsoft.com/en-us/library/windows/desktop/bb986746(v=vs.85).aspx)
BOOL
__stdcall
TP_IsPartitionActivated(
__in LPCWSTR pPartition,
__out PBOOL pbIsActivated
)
{
HANDLE hDevice = INVALID_HANDLE_VALUE;
PARTITION_INFORMATION_EX szPartitionInformation;
DWORD cbReturned = 0x00;
if (pPartition == NULL || pbIsActivated == NULL) { return FALSE; }
__try
{
hDevice = CreateFileW(pPartition, 0x00, 0x00, NULL, OPEN_EXISTING, 0x00, NULL);
if (hDevice == INVALID_HANDLE_VALUE) { return FALSE; }
RtlZeroMemory(&szPartitionInformation, sizeof(szPartitionInformation));
if (FALSE != DeviceIoControl(hDevice, IOCTL_DISK_GET_PARTITION_INFO_EX, NULL, 0x00, (LPVOID)&szPartitionInformation, sizeof(PARTITION_INFORMATION_EX), &cbReturned, NULL))
{
if (PARTITION_STYLE_MBR == szPartitionInformation.PartitionStyle)
{
*pbIsActivated = szPartitionInformation.Mbr.BootIndicator;
}
else
{
}
return TRUE;
}
else
{
cbReturned = GetLastError();
wprintf(L"%08X(%d)\n", cbReturned, cbReturned);
}
}
__finally
{
if (hDevice != INVALID_HANDLE_VALUE) { CloseHandle(hDevice); }
}
return FALSE;
}
전화
WCHAR szPartition[] = L"\\\\.\\C:";
BOOL bIsActivated = FALSE;
if (FALSE != TP_IsPartitionActivated(szPartition, &bIsActivated))
{
wprintf(L"%s \n", bIsActivated == FALSE ? L"not activated" : L"activated");
}
else
{
wprintf(L"function fail\n");
}
처럼 당신의 목표를 도움이 될 수있다 그것은 보장되지 않습니다'? – c00000fd
@ c00000fd :이 질문은 파티션에 활성 상태인지 여부를 보여줍니다. 이 파티션을 통해 현재 실행중인 Windows의 인스턴스가 다른 질문인지 여부 –
@HarryJohnston : 좋습니다. 내가 참조. 그것은 아마도 그가 그것을 표현한 방식 일 것입니다. – c00000fd