Installare la mia app nella directory "Programmi". E io installo i dati, sotto la directory "ProgramData":Scrivere nella cartella "ProgramData" (W7 e Vista) .NET
Environment.SpecialFolder.CommonApplicationData
In Programdata ho creato cartella in cui salvare i dati. Esempio:
C: \ ProgramData \ MyApp \ MyData \ qui ho i file e le cartelle
Sotto XP tutto funziona bene. Ma non sotto Vista o sistema operativo W7.
Posso leggere i file in questa directory, ma non riesco a scrivere file, non riesco a creare nuovi file, ecc. L'utente è registrato come amministratore.
Dove posso memorizzare i dati senza restrizioni? Ho bisogno di memorizzare i dati in una cartella visibile per tutti gli utenti
Modificato:
Ho questo codice nel mio file app.manifest:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- Opciones del manifiesto de Control de cuentas de usuario
Si desea cambiar el nivel de Control de cuentas de usuario de Windows, reemplace el
nodo requestedExecutionLevel por alguno de los siguientes.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Si desea utilizar la virtualización de archivos y del Registro para la compatibilidad
con versiones anteriores, elimine el nodo requestedExecutionLevel.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
Articolo correlato: http://stackoverflow.com/questions/1191941/c-file-write-permission-issue-under-program-files-folder –