Я использую this Impersonator class для копирования файлов в каталог с правами доступа.Копирование файла с использованием имитатора, выброс исключений несанкционированного доступа
public void CopyFile(string sourceFullFileName,string targetFullFileName)
{
var fileInfo = new FileInfo(sourceFullFileName);
try
{
using (new Impersonator("username", "domain", "pwd"))
{
// The following code is executed under the impersonated user.
fileInfo.CopyTo(targetFullFileName, true);
}
}
catch (IOException)
{
throw;
}
}
Этот код работает практически отлично. Проблема, с которой я сталкиваюсь, - это когда sourceFullName является файлом, находящимся в папке C: \ Users \ имя_пользователя \ Документы, где у исходного пользователя есть доступ, но нет имитатора.
Исключение я получаю при попытке скопировать файл из такого расположения является:
Необработанное исключение типа «System.UnauthorizedAccessException» произошло в mscorlib.dll Дополнительная информация: Доступ к пути " C: \ Users \ имя_пользователя \ Documents \ file.txt ".
Эй, это мой класс, аккуратным :-) –
Как об использовании [Process Monitor] (https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx), чтобы увидеть, что на самом деле происходит на файловый уровень (фактический пользователь, фактический файл, фактические разрешения и т. д.) –
Wow !!! Рад сообщить вам, что вы сделали очень хорошую работу. Спасибо – ehh