У меня проблема со сторонним компонентом, с которым мне приходится взаимодействовать из C # или C ++, но я не могу его контролировать.
Вот ситуация:
Сторонний компонентчасть программного обеспечения, которая записывает данные в папку «Program Files».В Win7 это означает, что для пользователей без прав администратора эти данные будут записываться в папку виртуализированных программных файлов в их профиле.Мне нужно прочитать эти данные через API, предоставленный в комплекте .dll.
При запуске стороннего инструмента с правами администратора и ящиком с отключенным UAC (фактически позволяющим доступ для записи в c: \ Program Files),Я могу читать данные из этой папки, используя стандартное взаимодействие (LoadLibrary / GetProcAddress в C ++ или P / Invoke в C #).Для ясности, в этом случае и стороннее программное обеспечение, и мой инструмент, использующий .dll, пишут / читают из C: \ Program Files (проверено с помощью Process Monitor от sysinternals).
Вот проблема:В системе с включенным контролем учетных записей стороннее программное обеспечение записывает в виртуализированную папку, но мой инструмент все еще читает из C: \ Program Files, поэтому я не могу прочитать данные.Обратите внимание, что я не могу это контролировать, так как не могу напрямую прочитать эти данные, мне нужно пройти через сторонний файл .dll!Поэтому я думаю, что мой вопрос заключается в следующем: что я могу сделать, чтобы заставить мою программу вести себя как сторонний компонент, то есть заставить ее читать из VirtualStore при работе с ограниченными привилегиями?Или мне по-другому?