Не похоже, что есть что-то, что можно исправить. API-функция GetTempPath
- это именно та функция, которая используется для определения местоположения, в котором программе разрешено создавать временные файлы. То, что тестер совместимости не смог удалить каталоги, не означает, что каталоги должны были быть где-то еще. Это только означает, что их нельзя было удалить во время попытки программы. Возможно, что другая программа (например, тестируемая) открыла файл в одном из этих каталогов; Windows не позволяет удалять папки, если в них есть открытые файлы.
Одним из возможных источников проблем является способ, которым MadExcept создает каталоги. Он создает их так, что они наследуют разрешения своих родительских каталогов. Если удаление запрещено для родительского каталога, то оно также будет запрещено для вновь создаваемых временных каталогов. Это частично указывает на проблему конфигурации в вашей системе: GetTempPath
может возвращать путь к каталогу, который не существует. Он просто возвращает первое найденное значение в любой из переменных среды TMP, TEMP и USERPROFILE. Ответственность за точность этих данных лежит на пользователях (а не на вашей программе).
Знание того, что MadExcept использует GetTempPath
для обнаружения временного каталога, дает вам возможность. Вы можете вызвать SetEnvironmentVariable
, чтобы изменить значение TMP для вашего процесса, и вместо этого MadExcept создаст свой каталог там. (Но если системное местоположение для временных файлов уже не работает, удачи в поиске альтернативы.)