Расположение в системе, где любой пользователь/администратор может иметь разрешение на чтение/запись.

У меня есть приложение wpf. Он использует базу данных SQL CE.

Я создаю файл sdf в пользовательской папке AppData. Но для отдельного приложения это создаст отдельные файлы sdf.

Я не хочу этого. Мне просто нужно общее расположение базы данных, в котором любой пользователь/администратор может иметь разрешение на чтение/запись.

Какое место предпочтительнее для такого сценария?


person Community    schedule 19.09.2013    source источник
comment
Если вы используете W7, поместите БД в C:\ProgramData.   -  person Rezoan    schedule 19.09.2013
comment
@Rezoan: Но мне нужно установить для этого разрешение, насколько мне известно. Любая альтернатива без разрешения?   -  person    schedule 19.09.2013
comment
Это общее место для всех приложений. здесь не нужно разрешение.   -  person Rezoan    schedule 19.09.2013
comment
@Rezoan: Нет, для этого требуется разрешение. Microsoft не разрешает запись для ProgramData   -  person    schedule 19.09.2013
comment
Так что поставьте разрешение на запись для всех пользователей.   -  person Rezoan    schedule 19.09.2013
comment
Если вы находитесь в режиме администратора, ему не требуется никаких разрешений на чтение/запись. если вы находитесь под стандартным пользователем, вам может потребоваться разрешение на запись. Итак, для всех пользователей дайте разрешение на запись и поместите сюда БД. тогда вы можете читать/писать его от любых пользователей. @rupareli   -  person Rezoan    schedule 19.09.2013
comment
Даже гостевая учетная запись Windows может записывать в C:\ProgramData, поэтому любой обычный пользователь также должен иметь такую ​​возможность. MSDN о SpecialFolder.CommonApplicationData: The directory that serves as a common repository for application-specific data that is used by all users, так в чем ваша проблема?   -  person Clemens    schedule 19.09.2013
comment
@Clemens см. эту тему: social.msdn.microsoft.com/Forums/windowsdesktop/en-US/ что делать ты говоришь?   -  person Rezoan    schedule 19.09.2013
comment
@Rezoan Конечно, вам может потребоваться явно предоставить доступ на запись к файлам, записанным в папке ниже C:\ProgramData, но на самом деле это необходимо в любом случае, независимо от того, где вы записываете файл.   -  person Clemens    schedule 19.09.2013


Ответы (2)


Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Это дает вам корневую папку, в которой находятся все данные приложения. Создайте здесь подпапку для своего приложения и сохраните файл там.

person user2793921    schedule 19.09.2013
comment
Но мне нужно установить разрешение на это, насколько мне известно. Любая альтернатива без разрешения? - person ; 19.09.2013
comment
@ruparelia Ты ошибаешься. Разрешение не требуется. SpecialFolder.CommonApplicationData (то есть C:\ProgramData начиная с Vista) — это именно то, о чем вы просили. - person Clemens; 19.09.2013
comment
@Clemens: я уже пробовал, что дает мне исключение: Access Denied. Но все же я попробую еще раз для него. - person ; 19.09.2013

К сожалению, обычное место доступно только, и каждый предложит, это системный каталог ProgramData. который обычно находится в папке "C:\ProgramData" на vista и seven.

а для XP это "C:\Documents and Settings\All Users\Application Data"

Если ваше приложение работает в административном режиме, разрешение на чтение/запись не требуется.

Но если вы планировали запустить приложение под стандартной учетной записью, вам может потребоваться разрешение на запись. но это зависит от системы UAC.

Поэтому предлагается создать папку для вашей базы данных в разделе ProgramData, поместить туда свою базу данных, которая предполагает использование всеми другими приложениями от другого пользователя, и предоставить разрешение на доступ запись/изменение к этой папке для всех пользователей.

person Rezoan    schedule 19.09.2013
comment
Я просто столкнулся с той же проблемой ... Поэтому я думаю, что должен дать разрешение. - person ; 19.09.2013