2012-01-19 4 views
9

Ho appena trovato una piccola parte di codice che consente di creare una directory con Windows API senza utilizzare system(). L'unico problema è che non riesco a creare la directory nella sottodirectory. Per esempioUtilizzo API API CreateDirectory in C++

#include<windows.h> 

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

Creare una cartella denominata casuale C.

ma se lo faccio

#include<windows.h> 

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

crea nella cartella C Che denominata Usersmorons e non gli idioti cartella sotto Utenti. Qualche suggerimento?

+1

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

+0

Ho provato ma in questo modo non crea nulla. – user1143336

+0

Hai i permessi per creare le directory in C: \ Users? Potrebbe essere necessario eseguire il programma come amministratore per disporre delle autorizzazioni necessarie. –

risposta

20

hai bisogno di un'altra barra rovesciata in là:

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

... oppure puoi usare le barre in avanti: 'CreateDirectory (" c:/user/deficienti ")'. Windows richiede back-slash sulla riga di comando, ma l'API accetta o barre posteriori o normali. –

34

Sarà necessario l'accesso come amministratore per creare o eliminare una cartella in C: \ Users. Assicurati di eseguire .exe come amministratore, per assicurarti di avere questi privilegi. In caso contrario, CreateDirectory fallirà.

Per ottenere l'errore restituito, utilizzare GetLastError. Per un riferimento sugli errori che possono tornare, si prega di dare un'occhiata alla sezione "valore di ritorno" a

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

Inoltre, il codice che stai cercando è

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

Come esigenze là essere un "\\" prima di "deficienti"

+4

È altamente ingiusto che abbia ottenuto tutti i voti positivi, quando questa è una risposta molto migliore della mia. Avere un upvote :-) – Anodyne

+0

Beh, grazie, lo apprezzo =) – josephthomas