Tôi cài đặt ứng dụng của mình trong thư mục "Program Files". Và tôi cài đặt dữ liệu, dưới "ProgramData" thư mục:Viết trong thư mục "ProgramData" (W7 và Vista) .NET
Environment.SpecialFolder.CommonApplicationData
Trong ProgramData Tôi đã tạo ra thư mục để lưu dữ liệu. Ví dụ:
C: \ ProgramData \ MyApp \ MyData \ ở đây tôi có các file và thư mục
Dưới XP tất cả chạy tốt. Nhưng không phải dưới hệ điều hành Vista hoặc W7.
Tôi có thể đọc tệp trong thư mục này, nhưng tôi không thể ghi tệp, tôi không thể tạo tệp mới, v.v. Người dùng được đăng nhập dưới dạng Quản trị viên.
Tôi có thể lưu trữ dữ liệu mà không bị hạn chế ở đâu? Tôi cần lưu trữ dữ liệu trong một thư mục rõ ràng cho tất cả người dùng
EDITED:
tôi có mã này trong file app.manifest tôi:
<?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>
Bài liên quan: http://stackoverflow.com/questions/1191941/c-file-write-permission-issue-under-program-files-folder –