Невозможно удалить папку с SHFileOperation - PullRequest
6 голосов
/ 15 ноября 2010

Я не могу удалить папку в Windows со следующим кодом:

SHFILEOPSTRUCT shfo = {
    NULL,
    FO_DELETE,
    path,
    NULL,
    FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION,
    FALSE,
    NULL,
    NULL };

SHFileOperation(&shfo);

Мне нужно использовать SHFileOperation вместо RemoveDirectory, потому что мне нужно удалить непустые папки.

Однако эта функция завершается ошибкой, даже если значение в path указывает на пустую локальную папку с полным контролем над каждым пользователем, завершается двойным нулем (как этого требует документация ), не имеет системы , скрытый или только для чтения атрибут ...

К сожалению, функция не возвращает код ошибки (возвращает ноль в случае успеха или ненулевое значение в противном случае), а вызов GetLastError возвращает ERROR_SUCCESS ...

Где ошибка?

1 Ответ

11 голосов
/ 15 ноября 2010

решаемые ...

Переменная path на самом деле не заканчивалась двойным нулем, потому что я использовал wcscpy_s, заполняющий строковый буфер (который я ранее заполнил нулями) значением 0xFD после нулевого символа ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...