Проект Windows Form (C #) перемещает файл в каталог пользователя.

У меня есть проект Windows Form, и я создал проект мастера установки, чтобы пользователи могли установить его, используя способ «Далее, затем, завершение».

Этот проект использует Microsoft Access в качестве базы данных, и я правильно добавил файл базы данных в SetupWizard, и все было в порядке.

ОДНАКО после переустановки я заметил, что Windows копировала файл базы данных из «Папки приложения» в C: \ users \ myUser \ AppData \ Local \ VirtualStore \ Program Files (x86) \.

И просто к сведению, моя строка подключения в app.config:

<connectionStrings>
    <add name="<ProjectName>.Properties.Settings.databaseConnectionString"
     connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\database.mdb;Persist Security Info=True;Jet OLEDB:Database Password=MyPassword"
providerName="System.Data.OleDb" />
</connectionStrings>

Если я просто соберу .exe из ProjectOutput и базу данных.mdb в одной папке, он будет работать отлично.

Когда я делаю установку, он копирует файл базы данных в папку C: \ users \ myUser \ AppData \ Local \ VirtualStore \ Program Files (x86) \, и это проблема, так как я хочу, чтобы пользователь установил его там, где ему заблагорассудится, и что файл останется только там. (Кстати, это требование программного обеспечения).

Я также пробовал установку для «текущего пользователя» и «всех пользователей», и поведение было таким же.


person Talles Santana    schedule 28.04.2014    source источник
comment
Вы не можете писать в Program Files при нормальном использовании.   -  person SLaks    schedule 28.04.2014
comment
Выбрано answer в этом сообщение может оказаться полезным.   -  person Hassan    schedule 28.04.2014
comment
Спасибо @SLaks !! Ваш ответ правильный. Мне нужно найти обходной путь сейчас ^^   -  person Talles Santana    schedule 29.04.2014


Ответы (1)


Вы обнаружили перенаправление папок в системах UAC, вот что происходит, когда вы пишете в папки с ограниченным доступом в некоторых версиях ОС:

http://blogs.windows.com/windows/archive/b/developers/archive/2009/08/04/user-account-control-data-redirection.aspx

Вашему коду требуется манифест повышения прав, чтобы он просил пользователя повысить уровень до администратора. Это может помочь:

http://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware

и вам нужен требуемый администратор уровня выполнения.

Если вы хотите, чтобы ограниченные пользователи могли использовать ваше приложение, перепроектируйте его так, чтобы оно не записывалось в вещи, требующие прав администратора. Вот для чего нужны такие папки, как User's Application Data.

person PhilDW    schedule 29.04.2014