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

ел бы, чтобы моя программа выдавала ошибку, когда она пытается создать файлы в защищенных местах, таких как корень диска C: \ (например:FILE* FileHandle = fopen("\\file.txt", a)). Вместо этого файл создается в виртуальном хранилище в% APPDATA%.

Как я могу отключить этот виртуальный магазин?

Спасибо

РЕДАКТИРОВАТЬ: Просто чтобы прояснить, я не спрашиваю, как обойти безопасность и создать мой файл в защищенном месте. Я хочу, чтобы создание файла было неудачным, чтобы я мог сказать пользователю, что он был идиотом.

 Zain Rizvi30 дек. 2013 г., 21:48
@BenVoigt Спасибо за напоминание. Я не смотрел на этот вопрос целую вечность

Ответы на вопрос(3)

http://www.interworks.com/blogs/dsmith/2011/09/21/disabling-windows-7-virtual-store

Короче говоря, это:

-В Windows 7 Запустите Orb, выполните поиск локальной политики безопасности и выберите ее.

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

MSDN:

Виртуализация включена только для:

32-битные интерактивные процессыЗаписываемый администратором файл / папка и ключи реестра

Виртуализация отключена для:

64-битные процессыНеинтерактивные процессыПроцессы, которые олицетворяютАбоненты режима ядраИсполняемые файлы, которые имеют требуемыйExecutionLevel

Как отметил Адам Марас, лучше всего установить на вашем запросе запрашиваемый уровень исполнения путем добавления манифеста. RequestExecutionLevel уровня "asInvoker" приведет к сбою файловых операций в защищенных местах, а не к перенаправлению в виртуальное хранилище или запросу повышения прав.

Решение Вопроса

highAvailable или requireAdministrator. Звучит так, как будто вы хотите 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>
 ZhekaKozlov18 июн. 2013 г., 10:00
Я добавил раздел trustInfo в мой файл манифеста. Теперь процесс не пишет в VirtualStore. Тем не менее, процесс все еще пытается прочитать из VirtualStore :( Есть ли способ отключить это тоже?
 Bob7707 сент. 2012 г., 04:12
Да, манифест с<trustInfo/> В разделе отмечен исполняемый процесс как «Vista Vista» вместо «Legacy».
 Joshua18 июн. 2013 г., 19:43
Лампочка! Есть наиболее вероятный источник ошибки UAC, которую мы никогда не сможем отследить. К сожалению, программа, для которой мне придется изменить манифест, не наша, поэтому она никогда не будет работать.

Ваш ответ на вопрос