Вопрос

У меня есть устаревшая программа VB6, которая устанавливает файл Access в подкаталог папки общих данных (CSIDL_COMMON_APPDATA).Теперь я установил эту программу в 64-битной системе Vista, и программа работает нормально и обращается к файлу C:\ProgramData\Wow\WowCat.mdb, но этот файл не отображается в проводнике Windows.

Я хочу перезаписать эту базу данных более поздней версией, взятой с моего старого компьютера, но с помощью Проводника я не вижу файл в C:\ProgramData\Wow\ (я показываю все скрытые и системные файлы).Если я все равно скопирую новый WowCat.mdb, программа все равно будет работать со старой.

При выполнении кода в VB он определенно открывает файл по адресу:C:\ProgramData\Wow\WowCat.mdb.Ищем С:диск показывает только новую копию, так где же та, к которой обращается программа?

Это было полезно?

Решение

Это происходит из-за перенаправления папок в Windows Vista.Если у вас обычно нет прав на запись чего-либо в папку C:\Program Files, Vista автоматически перенаправит эти записи в «секретную» папку внутри вашего пользовательского каталога.Файл по-прежнему будет виден пользователю, создавшему его (и всем программам, запущенным от имени этого пользователя), но он не будет виден никому другому.Таким образом, ваша программа, вероятно, работает от имени другого пользователя, чем Explorer, и поэтому Explorer не может ее видеть.

См. следующий вывод из dir /aL на моем 64-битном компьютере с Vista:

C:\ProgramData>dir /aL
 Volume in drive C has no label.
 Volume Serial Number is 74DB-58F8

 Directory of C:\ProgramData

02.11.2006  16:41    <JUNCTION>     Application Data [C:\ProgramData]
02.11.2006  16:41    <JUNCTION>     Desktop [C:\Users\Public\Desktop]
02.11.2006  16:41    <JUNCTION>     Documents [C:\Users\Public\Documents]
02.11.2006  16:41    <JUNCTION>     Favorites [C:\Users\Public\Favorites]
02.11.2006  16:41    <JUNCTION>     Start Menu [C:\ProgramData\Microsoft\Windows\Start Menu]
02.11.2006  16:41    <JUNCTION>     Templates [C:\ProgramData\Microsoft\Windows\Templates]
               0 File(s)              0 bytes
               6 Dir(s)  62 040 051 712 bytes free

Эта функция известна как точки повторной обработки или соединения, в зависимости от того, где вы о них прочитали.Они очень похожи на символические ссылки в Unix.

Другие советы

Для правильного выполнения этого действия требуется установщик Windows MSI или устаревший установщик, работающий с повышенными правами, создает подпапку в CommonAppDataFolder, предоставляет полный доступ для всех (или соответствующей группы) к этой папке и, наконец, помещает туда вашу MDB.Вы также можете создать папку, переместить туда файл MDB и установить разрешения только для этого файла.

Также возможно, что сам EXE-файл сделает это при первом запуске, если он запускается с повышенными правами или обнаруживает упущение и запускает процесс с повышенными правами для выполнения задания.Однако стандарты требуют, чтобы это действие должно быть инициировано через пункт меню или кнопку с отображаемым значком UAC Shield, а не просто через всплывающее окно UAC.

Однако с пакетом MSI все намного проще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top