В Win32 текущий рабочий каталог вашего основного потока устанавливается в место, из которого был запущен исполняемый файл. Моя проблема заключается в том, что даже после вызова SetCurrentDirectory() в другом месте процесс, по-видимому, все еще имеет объект файловой системы, ссылающийся на этот начальный каталог запуска (поддающийся проверке с помощью такого инструмента, как Process Explorer), что означает этот директор не может быть удален процессом.
Кто-нибудь здесь знает не слишком хакерское решение? Я специально сталкиваюсь с проблемой с программой, которая интегрируется с проводником (добавление глагола в раздел реестра HKCR\Directory\shell), мне нужно обработать файлы в каталоге, щелкнутом правой кнопкой мыши, и удалить исходный каталог, что невозможно потому что исходный рабочий каталог установлен, как вы уже догадались, в каталоге, по которому щелкнули правой кнопкой мыши.
EDIT: я выберу подход "использовать вспомогательный запуск из нормального каталога". Это может быть не очень элегантно, но оно будет работать и не требует никаких неприятных хаков.