Как отключить VirtualStore для программ C ++?
-
12-10-2019 - |
Вопрос
Я бы хотел, чтобы моя программа бросала ошибку, когда она пытается создавать файлы в защищенных местах, таких как корень диска C: (например,: FILE* FileHandle = fopen("\\file.txt", a)
) Вместо этого файл создается в виртуальном магазине под %AppData %.
Как я могу отключить этот виртуальный магазин?
Спасибо
РЕДАКТИРОВАТЬ: Просто чтобы быть ясным, я не спрашиваю, как обойти безопасность и создавать свой файл в защищенном месте. Я хочу, чтобы создание файла не удалось, чтобы я мог сказать пользователю, что он идиот.
Решение
Вы добавляете манифест приложения. Выберите AsInvoker, Sight Adviableable или AdviteAdministrator. Похоже, вы хотите Asinvoker.
Из http://msdn.microsoft.com/en-us/library/bb756929.aspx:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86"
name="IsUserAdmin"
type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Другие советы
Из MSDN:
Виртуализация включена только для:
- 32 -битные интерактивные процессы
- Доступный администратор файл/папки и ключи реестра
Виртуализация отключена для:
- 64 -битные процессы
- Неинтерактивные процессы
- Процессы, которые выдают себя за себя
- Абоненты режима ядра
- Исполняемые файлы, которые имеют запрос на эксплуатацию
Лучше всего, как отметил Адам Марас, состоит в том, чтобы установить запрос на ваш приложение, добавив манифест. Запрашиваемая эксплуатация «asinvoker» приведет к выходу из строя файловых операций в защищенных местах, а не перенаправляется в виртуальное хранилище или пробуждает высоту.
Вот статья, которая показывает, как отключить виртуализацию.
http://www.interworks.com/blogs/dsmith/2011/09/21/disabling-windows-7-virtual-store
Короткая это:
-Из Windows 7 Start Orb, выполните поиск по локальной политике безопасности и выберите ее.
-О. На правой панели прокрутите до конца, и вы найдете настройку «Управление учетной записью пользователя: виртуализируйте файлы и реестр сбоев записи в местоположениях для каждого пользователя», дважды щелкните по этому настройку и измените его на отключение.