как под Вистой избежать виртуальных фолдеров?
От: a452  
Дата: 24.07.08 20:45
Оценка:
Добрый день! Извините, если уже было. Проблема такая: есть плагин под ИЕ (длл, зарегистрирована как Оле ин-проц сервер). Эта длл записывает некоторые данные в файл, который помещается в папку в МайДокьюментс. Есть экзешник, который после запуска ищет этот файл в указанном месте и считывает данные. Все прекрасно работает под ХР. Но под дурацкой(другого слова подобрать не могу) Вистой возникает проблема. Эта дура перенаправляет вывод из длл в виртуальный фолдер (то есть хранит рядом, путь типа такого АппДата\Микрософт\Виртуализация\далее_реальный_путь). Причем Виста исправляет реальный путь в виртуальный только для длл, для экзешника использует реальный путь и естественно ничего не находит. Если бы она не трогала оба пути, либо если бы модифицировала оба каким угодно своим идиотским образом, но одинаково — все бы работало. Теперь же пакостит как настоящий диверсант. Можно даже смириться, что в ПрограмФайлз данные писать не дает, хоть какая-то логика есть. Но когда в МайДокьюменс запрещает писать данные, что делать-то, куда вообще можно писать? Можно ли как-то задав путь на некий файл — получить реальный путь на искомый файл, с учетом того, что эта уродина модифицирует его по своим кривым правилам?
Кто знает или кто сталкивался, подскажите пожалуйста. Да, все написано на С++.

25.07.08 00:47: Перенесено модератором из 'Архитектура программного обеспечения' — Хитрик Денис
Re: как под Вистой избежать виртуальных фолдеров?
От: Аноним  
Дата: 24.07.08 23:34
Оценка:
Либо отключить IE Protected Mode, либо написать свой COM сервер, в котором реализовать весь требуемый функционал.
Re: как под Вистой избежать виртуальных фолдеров?
От: lgb Канада  
Дата: 25.07.08 01:29
Оценка:
Здравствуйте, a452, Вы писали:

A>Проблема такая: есть плагин под ИЕ (длл, зарегистрирована как Оле ин-проц сервер). Эта длл записывает некоторые данные в файл, который помещается в папку в МайДокьюментс. Есть экзешник, который после запуска ищет этот файл в указанном месте и считывает данные.


Еще можно писать в пользовательскую директорию %USERPROFILE%\AppData. Курить здесь.

Положение директории для XP:
SHGetSpecialFolderPath(0, szBuf, CSIDL_APPDATA, False); // szBuf: array [0..MAX_PATH-1] of Char;

Для приложений с низкими привилегиями в Vista:
SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, 0, sw); // sw: WideString;

Эту ф-цию в Висте надо грузить динамически, ибо в XP ее нет.
locallow
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.