Pregunta

Me gustaría que mi programa para generar un error cuando se intenta crear archivos en lugares protegidos como la raíz de la unidad C: \ (por ejemplo: FILE* FileHandle = fopen("\\file.txt", a)). En cambio, el archivo se crea en la tienda virtual en% APPDATA%.

¿Cómo puedo desactivar que Virtual Store?

Gracias

EDIT: Para ser claro, no estoy preguntando cómo eludir la seguridad y crear mi archivo en un lugar protegido. Quiero que la creación de archivos a fallar por lo que puedo decirle al usuario que era un idiota.

¿Fue útil?

Solución

añadir un manifiesto de aplicación. Elija asInvoker, highestAvailable o requireAdministrator. Parece que usted quiere 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>

Otros consejos

MSDN :

La virtualización está habilitada únicamente para:

  • procesos interactivos 32 bits
  • Administrador de archivos grabable / carpeta y claves de registro

La virtualización está deshabilitada para:

  • 64 procesos de bits
  • Procesos no interactivos
  • Los procesos que se haga pasar por
  • en modo de núcleo que llaman
  • Los ejecutables que tienen un requestedExecutionLevel

Su mejor apuesta, como señaló Adam Maras, es fijar un requestedExecutionLevel en su aplicación mediante la adición de un manifiesto. Un requestedExecutionLevel de "asInvoker" hará que las operaciones de archivo fallen en lugares protegidos, en lugar de volver a dirigir a la tienda virtual o pida confirmación de elevación.

Aquí está un artículo que muestra cómo desactivar la virtualización.

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

El corto de él es:

-Desde el Windows 7 Start Orb, hacer una búsqueda de la Política de Seguridad Local y seleccionarlo.

-expand Directivas locales y haga clic en Opciones de seguridad. En el panel derecho, recorra todo el camino hasta el fondo y encontrará un ajuste llamado "Control de cuentas de usuario: fracasos de archivos Virtualize y escritura de Registro por ubicaciones de usuario.", Haga doble clic en ese entorno y el cambio a minusválidos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top