Hallo,
Mein Programm soll Dateien in einem geschützten Netzwerkverzeichnis lesen und schreiben können.
Es soll sich mit dem gegebenen Benutzername und dem Passwort authorisieren, um Zugriff auf das Verzeichnis zu bekommen.
Wie muss ich vorgehen?
...Es geht auch ohne Impersonation.
Suchst Du nach sowas in der Art?
private void ApplyUserCredentials(string Share, string Domain, string Username, string Password)
{
USE_INFO_2 useInfo = new USE_INFO_2();
useInfo.ui2_local = string.Empty;
useInfo.ui2_remote = Share;
useInfo.ui2_password = Password;
useInfo.ui2_asg_type = 0; //disk drive
useInfo.ui2_usecount = 1;
useInfo.ui2_username = Username;
useInfo.ui2_domainname = Domain;
uint paramErrorIndex;
uint returnCode = NetUseAdd(null, 2, ref useInfo, out paramErrorIndex);
if (returnCode != 0)
{
throw new Win32Exception((int)returnCode);
}
}
[DllImport("NetApi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern UInt32 NetUseAdd(string UncServerName,UInt32 Level, ref USE_INFO_2 Buf, out UInt32 ParmError);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct USE_INFO_2
{
internal string ui2_local;
internal string ui2_remote;
internal string ui2_password;
internal UInt32 ui2_status;
internal UInt32 ui2_asg_type;
internal UInt32 ui2_refcount;
internal UInt32 ui2_usecount;
internal string ui2_username;
internal string ui2_domainname;
}
Bart Simpson
Praxis ist wenn alles funktioniert und keiner weiss warum.
Theorie ist wenn man alles weiss, aber nichts funktioniert.
Bei uns wird Theorie und Praxis vereint: Nichts funktioniert und keiner weiss warum...
Hallo Mr. Bart Simpson!
Habe mir heute mal deinen NetUseAdd Code angeschaut. Er funktioniert. Ich kann somit die Verbindung zu meinem Server aufbauen sprich die Authentifizierung und danach die Dateien oder ähnliches auslesen, z.B. welche Daten auf c$ liegen.
Wollte nur mal Danke sagen.