2010-10-22 3 views
0

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

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' отклонен.

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

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

ответ

2

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

+0

Даже служба Windows не должна запускаться как администратор, она должна работать как конкретный пользователь домена, которому было предоставлено ** только ** требуемые разрешения. – cjk

+0

У меня есть учетные записи администратора. –

0

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