Прежде чем сделать это, вам понадобится программно (если это так, как вы хотите его решить), создайте соединение с доменом с правильным пользователем. Вы можете сделать это с помощью этого класса:
public class MprWrapper
{
[DllImport("Mpr.dll")]
private static extern int WNetUseConnection(
IntPtr hwndOwner,
_NETRESOURCE lpNetResource,
string lpPassword,
string lpUserID,
int dwFlags,
string lpAccessName,
string lpBufferSize,
string lpResult
);
struct _NETRESOURCE
{
public int dwScope;
public int dwType;
public int dwDisplayType;
public int dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
}
public static void WNetUseConnection(string remoteName, string user, string pass)
{
_NETRESOURCE myStruct = new _NETRESOURCE
{
dwType = 1, //it's a disk (0 is any, 2 is printer)
lpRemoteName = remoteName
};
int error = WNetUseConnection(new IntPtr(0), myStruct, pass, user, 0, null, null, null);
if (error != 0)
{
throw new Exception("That didn't work either");
}
// if we reach here then everything worked!!!
}
}
Вы подключаетесь с
MprWrapper.WNetUseConnection(@"\\DomainAddressHere", @"Domain\User", "Password1");
Тогда ваш метод GetFiles будет работать нормально. Это потенциально оставляет открытое соединение (но оно не создает более одного), но в любом случае вы можете создать код для его закрытия, правильно обрабатывать все и т. Д. Это всего лишь отправная точка.
Где я могу создать это соединение? – velvt
@velvt Перед вызовом метода – Gaspa79