Я пытаюсь отладить проблему с Cabal, где она не будет работать, если я изменил значение переменной% USERPROFILE% до ее запуска. Я, кажется, проследил ошибку обратно к вызову win32 sHGetFolderPath, указывающему на SIDL_APPDATA, который, кажется, терпит неудачу, если эта переменная изменена.Почему изменение% USERPROFILE% приводит к сбою sHGetFolderPath SIDL_APPDATA?
Я не совсем уверен, куда идти отсюда. Почему этот вызов ломается? Почему не меняется этот env-var, просто укажите каталог пользователя в другом месте? (Я пытаюсь заставить cabal работать чистым образом с флеш-накопителя.)
С одной и той же функцией с SIDL_PROFILE возвращается моя фактическая (зарегистрированная) пользовательская директория (C:/Docs и Settings/Me), хотя консоль, на которой запущена GHCi, имела каждый env-var, который я мог найти, с каталогом пользователя, в котором он перезагружен на флешку. Разве эти вызовы Win32 полностью игнорируют переменные среды?
В качестве примечания я обнаружил, что вызов по вызову через этот билет для Cabal: http://hackage.haskell.org/trac/hackage/ticket/709. Что бы ни происходило в SHGetFolderPath, это может помочь. – CodexArcanum 2010-11-24 21:52:08