2012-01-19 17 views
9

Acabo de encontrar un pequeño fragmento de código que me permite crear un directorio con Windows API sin usar system(). El único problema es que no puedo crear directorio en subdirectorio. Por ejemplo Uso de la API de Windows CreateDirectory en C++

#include<windows.h> 

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

Crear una carpeta llamada al azar en C.

pero si lo hago

#include<windows.h> 

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

Se crea en la carpeta C che llamado Usersmorons y no los tarados de carpetas en Usuarios. ¿Alguna sugerencia?

+1

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

+0

Lo he intentado, pero de esta manera no crea nada. – user1143336

+0

¿Tiene permisos para crear directorios en C: \ Users? Es posible que deba ejecutar el programa como administrador para tener los permisos necesarios. –

Respuesta

20

necesita otra barra invertida allí:

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

... o puede usar barras diagonales: 'CreateDirectory (" c:/user/morons ")'. Windows requiere barras diagonales inversas en la línea de comando, pero la API acepta barras diagonales inversas u normales. –

34

Tendrá acceso de administrador para crear o eliminar una carpeta en C: \ Users. Asegúrese de ejecutar el .exe como administrador para asegurarse de tener estos privilegios. Si no lo hace, entonces CreateDirectory fallará.

Para obtener el error que se devuelve, use GetLastError. Para una referencia sobre los errores que puedan regresar, por favor, eche un vistazo a la sección "Valor de retorno" en

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

Además, el código que busca es

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

medida que las necesidades allí ser un "\\" antes de "imbéciles"

+4

Es muy injusto que obtuve todos los upvotes, cuando esta es una respuesta mucho mejor que la mía. Tener un voto positivo :-) – Anodyne

+0

Bueno, gracias, lo aprecio =) – josephthomas