Отсутствует файл из папки Vista ProgramData - PullRequest
2 голосов
/ 26 декабря 2008

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

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

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

Ответы [ 2 ]

2 голосов
/ 26 декабря 2008

Это из-за перенаправления папок в 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.

0 голосов
/ 17 января 2009

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

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

Через MSI-пакет все намного проще.

...