Ich verwende this Impersonator class, um Dateien in ein Verzeichnis mit Zugriffsrechten zu kopieren.Beim Kopieren einer Datei mit dem Imitator wird eine Ausnahme für den nicht autorisierten Zugriff ausgelöst.
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;
}
}
Dieser Code funktioniert fast perfekt. Das Problem, dem ich gegenüberstehe, ist, wenn der sourceFullFileName eine Datei im Ordner C: \ Benutzer \ Benutzername \ Dokumente ist, wo der ursprüngliche Benutzer Zugriff hat, aber der Imitator nicht.
Die Ausnahme, die ich bekommen habe, während eine Datei aus einer solchen Position zu kopieren versuchen, ist:
Eine nicht behandelte Ausnahme des Typs ‚System.UnauthorizedAccessException‘ ist in mscorlib.dll aufgetreten Zusätzliche Informationen: Zugriff auf den Pfad ' C: \ Benutzer \ Benutzername \ Dokumente \ Datei.txt 'wird abgelehnt.
Hey, das ist meine Klasse, ordentlich :-) –
Wie wäre es mit [Process Monitor] (https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx) zu sehen, was tatsächlich passiert, eine Dateiebene (tatsächlicher Benutzer, tatsächliche Datei, tatsächliche angeforderte Berechtigungen usw.) –
Wow !!! Ich freue mich, Ihnen von Angesicht zu Angesicht zu sagen, dass Sie einen sehr guten Job gemacht haben. Vielen Dank – ehh