2012-01-19 11 views
9

tôi vừa tìm thấy một đoạn mã nhỏ cho phép tôi tạo thư mục có API cửa sổ mà không cần sử dụng hệ thống(). Vấn đề duy nhất là tôi không thể tạo thư mục trong thư mục con. Ví dụTạo các cửa sổ API sử dụng trong C++

#include<windows.h> 

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

Tạo một thư mục có tên ngẫu nhiên trong C.

Nhưng nếu tôi làm

#include<windows.h> 

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

Nó tạo ra trong thư mục C che tên Usersmorons và không phải là morons thư mục dưới Users. Bất kỳ đề xuất nào?

+1

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

+0

Tôi đã thử nhưng theo cách này không tạo ra bất cứ điều gì. – user1143336

+0

Bạn có quyền tạo thư mục trong C: \ Users không? Bạn có thể cần chạy chương trình với tư cách quản trị viên để có các quyền cần thiết. –

Trả lời

20

Bạn cần xuyệc ngược nhau trong đó:

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

... hoặc bạn có thể sử dụng dấu gạch chéo chuyển tiếp: 'CreateDirectory (" c:/user/morons ")'. Windows yêu cầu các dấu gạch chéo ngược trên dòng lệnh, nhưng API chấp nhận dấu gạch chéo ngược hoặc các dấu gạch chéo bình thường. –

34

Bạn sẽ cần truy cập quản trị để tạo ra hoặc xóa một thư mục trong C: \ Users. Đảm bảo rằng bạn đang chạy .exe làm quản trị viên, để đảm bảo bạn có các đặc quyền này. Nếu không, thì CreateDirectory sẽ thất bại.

Để nhận lỗi được trả lại, hãy sử dụng GetLastError. Đối với một tài liệu tham khảo về các lỗi có thể trả lại, xin hãy xem phần "giá trị Return" tại

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

Ngoài ra, các mã bạn đang tìm kiếm là

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

Như có nhu cầu là "\\" trước "morons"

+4

Thật không công bằng khi tôi nhận được tất cả các cuộc nổi dậy, khi đây là một câu trả lời tốt hơn nhiều so với tôi. Có một upvote :-) – Anodyne

+0

Vâng cảm ơn bạn, tôi đánh giá cao nó =) – josephthomas