2012-01-19 2 views
9

방금 ​​system()을 사용하지 않고 Windows API를 사용하여 디렉토리를 만들 수있는 코드 조각을 발견했습니다. 유일한 문제는 하위 디렉토리에 디렉토리를 만들 수 없다는 것입니다. 예를C++에서 CreateDirectory windows API 사용

#include<windows.h> 

int main(){ 
    CreateDirectory ("C:\\random", NULL); 
    return 0; 
} 

를 들어 C.

에 임의라는 이름의 폴더를 생성하지만

#include<windows.h> 

int main(){ 
    CreateDirectory ("C:\\Users\morons", NULL); 
    return 0; 
} 

을 할 경우 사용자에 따라 폴더 바보를 Usersmorons라는 이름의 C의 체 폴더에 생성하지. 제안 하시겠습니까?

+1

CreateDirectory ("C : \\ Users \\ morons", NULL); –

+0

나는이 방법으로 시도했지만 아무 것도 만들지 않습니다. – user1143336

+0

C : \ Users에 디렉터리를 만들 수있는 권한이 있습니까? 필요한 권한을 가지려면 관리자 권한으로 프로그램을 실행해야 할 수도 있습니다. –

답변

20

당신은 거기에 또 다른 백 슬래시가 필요합니다 사용자 : \

CreateDirectory ("C:\\Users\\morons", NULL); 
+11

... 아니면 CreateDirectory ("c :/user/morons")'를 사용할 수 있습니다. Windows에서는 명령 줄에 백 슬래시가 필요하지만 API에서는 백 슬래시 또는 일반 슬래시를 사용할 수 있습니다. –

34

만들거나 C에서 폴더를 삭제하려면 관리자 권한이 필요합니다. .exe를 관리자 권한으로 실행하여 이러한 권한이 있는지 확인하십시오. 그렇지 않으면 CreateDirectory가 실패합니다.

반환되는 오류를 얻으려면 GetLastError를 사용하십시오. 반환 할 수 있습니다 오류에 참고로, 또한

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx

에서 "반환 값"섹션에서 봐 주시기 바랍니다, 당신이 찾고있는 코드가 필요로

CreateDirectory ("C:\\Users\\morons", NULL); 

입니다 "바보"앞에 "\\"가 됨

+4

이것은 내가 upvotes를 모두 가지고 있다는 것은 매우 불공평합니다. 이것은 나의 것보다 훨씬 좋은 대답입니다. upvote :-) – Anodyne

+0

잘 주셔서 감사합니다, 그것을 주셔서 감사합니다 =) – josephthomas