ошибка доступа запрещена - c # - PullRequest
0 голосов
/ 22 октября 2010

У меня есть текстовое поле и кнопка в форме. Я хочу сохранить файл в сетевой путь, указанный в текстовом поле, при нажатии кнопки. я попробовал код, приведенный ниже.

 private void button1_Click(object sender, EventArgs e)
    {
        string destinationPath = txtFilePath.Text.ToString();
        string sourceFile = @"c:\1.txt";
        string fileName = Path.GetFileName(sourceFile);
        System.IO.File.Copy(sourceFile, Path.Combine(destinationPath, fileName));

    }

работает нормально, если пункт назначения предоставил разрешение на изменение содержимого. Если пункт назначения «только для чтения», он выдает ошибку. если ввод \ 192.168.0.24 \ aqm, то он показывает ошибку, показанную ниже (путь не имеет разрешения на запись)

Доступ к пути '\ 192.168.0.24 \ aqm \ 1.txt' запрещен.

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

или любые другие способы ?? Надеюсь, кто-нибудь поможет мне

Ответы [ 3 ]

2 голосов
/ 22 октября 2010

Я могу предложить вам другой путь.Если это возможно, сделайте Windows Service.Установите Service Log On на учетную запись с правами администратора.Сделайте процесс копирования с помощью службы Windows.Я использую этот алгоритм в одном из моих проектов.Это прекрасно работает, если служба входит в систему с учетными данными администратора.На компьютере Windows Service с правами администратора можно легко скопировать файл на любой сетевой компьютер.Например, поставьте системный таймер на службу.Пусть служба проверяет путь каждые 5 минут.Если в указанном пути существует файл, возьмите файл и скопируйте на сетевой компьютер, указав путь.

1 голос
/ 22 октября 2010

Вы можете запросить у пользователя имя пользователя и пароль, а затем передать их такой функции, как WNetAddConnection3 (см. http://www.pinvoke.net/default.aspx/mpr/WNetAddConnection3.html, чтобы узнать, как вызвать его из C #).

0 голосов
/ 22 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...