2012-04-10 53 views
-2

ファイルを移動しようとする小さなアプリケーションがあります。Windows 7のC++ MoveFileエラー(2)

はここで分コードです:

#include <windows.h> 

int main() 
{ 
    MoveFile("C:\\test.txt", "C:\\folder\\test.txt"); 
    // Here I use GetLastError() to get last error code witch is 2 and I can't find what mean; 

    return 0; 
} 

重要:このエラーは、Windows 7上ではなくXPが動作勝利に表示され、ファイルが移動されます!

+1

私の推測では、 'C:\ folder'は存在しないか、' C:\ test.txt'は存在しません。 Windows 7では、実際に 'C:\'に書き込むための管理者権限が必要です。なぜならエクスプローラで 'test.txt'が実際にその場所にあるわけではないからです。しかし、私は 'MoveFile'がこのユーザごとの仮想ストアメカニズムを認識しているかどうかわかりません... – 0xC0000022L

答えて

5

すべてのエラーコードon MSDNまたはヘッダーファイルを見つけることができます。

2はERROR_FILE_NOT_FOUNDです。これは、Windows 7でこれを試しているときにソースファイルが見つからなかったことを意味します。正しい相対パス/絶対パスがあることを確認してください。

+0

Ops、私は間違ったパスを持っていました。さて、私は単に "ERROR_ACCESS_DENIED"を意味するエラーコード5を受け取ります。私が移動しようとしているファイルは他のプロセスで使用されていません。 – kanevbgbe

+2

Windows 7には、管理者権限が異なります。あなたのUACをチェックしてください。あなた自身でいくつかの研究を行います。 –

+0

@ daffr32:あなたの質問で私のコメントを読んでください。もちろん、Windows 7(およびVista)のルールがXPと比較して変更されているため、「5」を受け取ることになります。プログラムをadminとして実行するか、 '%USERPROFILE%\ Desktop'のような許可の問題の影響を受けていないプログラムをテストする場所を使用するか... – 0xC0000022L

1

あなたの例には、タイプミスがあります。宛先ファイル名にバックスラッシュがありません。 Windowsは通常、この状況ではエラー2を生成します。

+0

これは手書きのエラーでした。 – kanevbgbe