2009-04-29 2 views
0

주어진 드라이브의 할당되지 않은 공간을 프로그래밍 방식으로 포맷하는 코드 스 니펫을 찾고 있습니다.할당되지 않은 공간을 프로그래밍 방식으로 포맷하는 방법은 무엇입니까?

.NET 코드 (VB.NET C#) 또는 C++를 이상적으로 찾고 있습니다.

많은 감사합니다.

+1

왜 할당되지 않은 공간을 포맷 하시겠습니까? 또는 어떤 드라이브에도 속하지 않은 할당되지 않은 공간에서 파티션을 만들려고합니까? –

답변

2

최상의 옵션은 WMI를 사용하는 것 같습니다. 특히 Win32_Volume 클래스의 Format 메소드를 살펴보아야합니다.

대신 Win32 API의 SHFormatDrive 함수를 사용할 수 있습니다. 기능이 WMI 메서드와 비교되는 방법을 잘 모르겠지만이 옵션이 더 간단 할 수 있습니다 (특히 C++). 편집 : M. Jahedbozorgan이 지적했듯이 이것은 드라이브 셸 대화 상자를 열어 드라이브를 포맷하는 것으로 보입니다.

세 번째 옵션은 코드에서 format.exe 명령 줄을 실행 한 다음 (stdout 스트림에서 읽음) 분명히 좋은 솔루션은 아닙니다.

기타 제안 사항은 MSDN 포럼의 this thread에 나와 있습니다.

+0

Windows XP 및 이전 버전 : Win32_Volume 클래스를 사용할 수 없습니다. SHFormatDrive는 셸의 서식 대화 상자를 엽니 다. – CSharper

+0

그래, 당신은 SHFormatDrive에 대해 옳은 것처럼 보인다. Win32_Volume과 WinXP에 대해 확신합니까? – Noldorin

+0

M. Jahedbozorgan이 옳다. MSDN의 Win32_Volume 문서는 xp와 그 이전 버전에서 클래스를 사용할 수 없다고 언급하고있다. – roo

0

Windows는 할당되지 않은 공간뿐만 아니라 전체 볼륨을 포맷하는 방법을 제공합니다.

귀하의 질문을 올바르게 이해하면 드라이브의 나머지 공간에 파티션을 생성 한 다음 새 파티션을 포맷 할 수 있습니다.

PInvoke 및 WMI의 Win32_Volume을 사용하려고합니다.

1

전체 드라이브를 채우는 파일을 만든 다음 임의의 데이터를 쓰고 플러시 한 다음 닫습니다.

첫 번째 단계는 여러 구성 (예 : NTFS 압축 볼륨 또는 사용자 별 할당량)에서 안정적으로 수행하기가 가장 어려울 것입니다.

또는 명령 줄에서 "cipher/w"를 사용하십시오.