3

また、使用後にディレクトリのタイムスタンプを変更しようとしていFILE_FLAG_BACKUP_SEMANTICSます。私のコードスニペットは以下の通りです

    int SetDirectoryTime(char *Path)
    {
        FILETIME ftCreate, ftAccess, ftWrite;
        Handle = CreateFile(Path, GENERIC_WRITE, FILE_SHARE_WRITE,
                NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);

        if (Handle == INVALID_HANDLE_VALUE)
        {
            //Unable to open directory
            return FALSE;
        }

        if (SetFileTime(Handle, &ftCreate, &ftAccess, &ftWrite) == 0)
        {
            //Unable to set directory time
            CloseHandle(Handle);
            return FALSE;
        }
    }

有効なハンドルを取得できましたが、SetFileTime がアクセス拒否を返していました。EnablePrivilege を試しましたがSE_BACKUP_NAMESE_RESTORE_NAMEアクセスが拒否されました。

4

2 に答える 2

3

のMSDNページには、時間を設定するファイルへのハンドルが明示的に記載されているため、特権が必要です。SetFileTime FILE_WRITE_ATTRIBUTES

そして、あなたのハンドルは、明らかにそうではありません。

というわけで...これで終わりです。

于 2013-08-13T06:26:46.193 に答える