где разместить мою базу данных, чтобы она работала под Vista и XP
Если эта база данных является файлом данных SQL Express или другими общими ресурсами, она должна находиться в цикле, чтобы учетная запись процесса сервера могла читать / писать.
возвращает "C: \ ProgramData [MyApp] \" [ исправленная опечатка ] под Vista, и это не доступно для записи обычным пользователям
Не в соответствии с быстрой проверкой в ACL здесь (на самом деле Win2k8):
PS C:\ProgramData> get-acl . | select -expand access
[...]
FileSystemRights : ReadAndExecute, Synchronize
AccessControlType : Allow
IdentityReference : BUILTIN\Users
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
<b>FileSystemRights : Write</b>
AccessControlType : Allow
IdentityReference : BUILTIN\Users
IsInherited : False
InheritanceFlags : ContainerInherit
PropagationFlags : None
Обратите внимание на последнее, что касается ACE, обычные пользователи имеют доступ для записи, но только к папкам и содержащимся в них файлам, не к файлам непосредственно в C: \ ProgramData.
Однако, если пользователь создает папку в C: \ ProgramData, другие пользователи не будут иметь прав на запись.
Ответ: Создайте папку под ProgramData для вашей базы данных и установите ACL для этой папки, чтобы предоставить всем пользователям доступ для чтения и записи к файлам в этой папке.