Создание временного файла в VB на ПК с Windows 7 - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть программа VB, которая создает временный файл PDF, затем открывает Outlook и прикрепляет файл.Я создаю файл в пути приложения (местоположение, из которого запускается программа - обычно C: \ Program Files \ ProgamName).Это хорошо работает в XP, так как кажется, что нет никаких сумасшедших проблем с разрешениями.Однако в Windows 7 файл не появляется.Там нет ошибок, файл не существует в этом месте.

Я изменил путь к корню C: \, но это тоже не работает.Я подозреваю, что это как-то связано с виртуализацией W7, поэтому вопрос в том, где я могу создать файл, к которому я смогу снова обратиться?

Я пытался избежать создания его на общем ресурсе на сервере, но он ищетнапример, это единственное место, где его можно поместить, так как кажется, что не так много мест, куда пользователь может записывать файлы в Windows 7.

Конечно, должно быть место, к которому пользователи могут получить доступ (не будучи администратором)создавать файлы.Даже не заводите меня на забаву, которую я имел с реестром в W7 !!!

Спасибо

Патрик

Ответы [ 2 ]

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

Вам необходимо создать файл в системном временном каталоге, который вы можете найти, вызвав Path.GetTempPath().

Как правило, ваша программа должна записывать только файлы в каталогах Application Data (или temp) пользователя и записывать только ключи реестра в HKEY_CURRENT_USER. (Это верно для любой версии Windows)
Если вы будете следовать этим рекомендациям, у вас не будет проблем с Windwos VIsta или 7.
Вы никогда не должны записывать информацию в места, которые используются несколькими пользователями.

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

Редактировать: хотя следующее будет работать, SLaks указывает, что это плохая практика, и временный файл не будет очищен.

Попробуйте% HOMEPATH% - это переменная среды для папки документов пользователяи должен работать независимо от того, какую версию Windows вы используете.

Другими словами, где вы имели обыкновение:

"c:\programfiles\programname\tempFileName"

использовать:

"%HOMEPATH%\tempFileName"
...