Мое приложение WPF позволяет пользователям добавлять «вложения» (Word, Excel, текстовые документы и т. Д.). Приложение генерирует ошибки «Отказано в доступе» при попытке открыть файл в сети нашей компании. Ошибка возникает после выполнения Process.Start. Откроется приложение оболочки (т. Е. Блокнот для текстового файла), а затем появится сообщение «Доступ запрещен». Первоначально у меня были похожие ошибки при попытке записи файлов, но я исправил эту проблему с помощью класса Impersonator , найденного здесь .
Вот код проблемы:
using (Impersonator impersonator = new Impersonator())
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = pathToDocument;
process.StartInfo.UseShellExecute = true;
process.Start();
}
Я получаю ту же ошибку при этом:
using (Impersonator impersonator = new Impersonator())
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = pathToDocument;
process.StartInfo.UserName = "uid";
process.StartInfo.Domain = "domain";
process.StartInfo.Password = new System.Security.SecureString();
foreach (Char c in "password")
{
process.StartInfo.Password.AppendChar(c);
}
process.StartInfo.UseShellExecute = false;
process.Start();
}
Развернутое приложение дает сбой, даже когда я жестко кодирую свой собственный идентификатор пользователя и пароль (у меня есть права «полный контроль» на чтение, запись, выполнение и т. Д.). Все работает нормально, если я изменяю путь к документу на другой общий диск с ослабленной безопасностью (где каждому предоставлен полный контроль). Приложение развернуто с основными настройками ClickOnce. Приложение не установлено на компьютере пользователя - оно доступно только онлайн. Что я должен сделать, чтобы предотвратить отказ в доступе?
Заранее спасибо.