Question

Je voudrais mon programme pour lancer une erreur quand il essaie de créer des fichiers dans des endroits protégés comme la racine du disque C: \ (par exemple: FILE* FileHandle = fopen("\\file.txt", a)). Au lieu de cela le fichier est créé dans le magasin virtuel sous% APPDATA%.

Comment puis-je désactiver ce magasin virtuel?

Merci

EDIT: Pour être clair, je ne demande pas comment contourner la sécurité et créer mon dossier dans un endroit protégé. Je veux la création de fichiers à l'échec afin que je puisse dire à l'utilisateur qu'il était un idiot.

Était-ce utile?

La solution

Vous ajoutez un manifeste d'application. Choisissez asInvoker, highestAvailable ou requireAdministrator. On dirait que vous voulez asInvoker.

De 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>

Autres conseils

De MSDN :

La virtualisation est activée uniquement pour:

  • 32 bits processus interactifs
  • Administrateur fichier inscriptible / dossier et les clés de registre

La virtualisation est désactivée pour:

  • 64 processus de bits
  • processus non interactifs
  • Les processus qui impersonate
  • les appelants en mode noyau
  • Exécutables qui ont un requestedExecutionLevel

Votre meilleur pari, comme Adam Maras a noté, est de mettre un requestedExecutionLevel sur votre application en ajoutant un manifeste. Un requestedExecutionLevel de « asInvoker » entraînera des opérations de fichiers échouent sur des emplacements protégés, plutôt que de rediriger vers le magasin virtuel ou une demande d'élévation.

Voici un article qui montre comment désactiver la virtualisation.

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

Le court est:

-De Windows 7 Démarrer Orb, faire une recherche pour la politique de sécurité locale et sélectionnez.

-expand Stratégies locales et cliquez sur Options de sécurité. Sur le volet de droite, faites défiler la liste vers le bas et vous trouverez un paramètre appelé « User Account Control: fichier virtualiser et les échecs d'écriture de registre à des emplacements par l'utilisateur »., Cliquez deux fois sur ce paramètre et changer Désactivé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top