2012-01-19 5 views
9

私はsystem()を使用せずにWindows APIを使ってディレクトリを作成できるコードを見つけました。唯一の問題は、サブディレクトリにディレクトリを作成できないことです。CreateDirectory windows APIの使用法をC++で

#include<windows.h> 

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

例えば はC.

にランダムな名前のフォルダを作成しますが、私は

#include<windows.h> 

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

を行う場合には、CのCHE Usersmoronsという名前のフォルダではなく、ユーザーの下のフォルダの低能で作成されます。 お勧めですか?

+1

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

+0

私は試しましたが、この方法では何も作成されません。 – user1143336

+0

C:\ Usersにディレクトリを作成する権限がありますか?必要な権限を持つには、プログラムをadminとして実行する必要があります。 –

答えて

20

あなたはそこに別のバックスラッシュが必要になります。

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

...またはスラッシュ 'CreateDirectory(" c:/ user/morons ")'を使用することができます。 Windowsではコマンドラインにバックスラッシュが必要ですが、APIではバックスラッシュまたは通常のスラッシュを使用できます。 –

34

あなたがCにフォルダを作成または削除するには、管理者のアクセスが必要になります:Users \ユーザー。 .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

関連する問題