Вопрос

Я бы хотел, чтобы моя программа бросала ошибку, когда она пытается создавать файлы в защищенных местах, таких как корень диска 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, выполните поиск по локальной политике безопасности и выберите ее.

-О. На правой панели прокрутите до конца, и вы найдете настройку «Управление учетной записью пользователя: виртуализируйте файлы и реестр сбоев записи в местоположениях для каждого пользователя», дважды щелкните по этому настройку и измените его на отключение.

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