...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