Фон: у Меня есть приложение, которое должно читать из файлов на сетевом диске (Z:)
Это работает отлично в моем офисном домене, однако он не работает над сайтом (в другом домене). Насколько я могу сказать пользователям домена, и сетевые диски установлены таким же образом, однако у меня нет доступа к пользователям и т.д. в клиентском домене.
Когда я не мог получить доступ к сетевому диску, я полагал, что мне был нужен маркер для пользователя. Это - то, как я исполняю роль пользователя:
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
...
const string userName = "USER";
const string pass = "PASS";
const string domainName = "VALIDDOMAIN.local" //tried with valid domain name and with null, same result
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;
IntPtr tokenHandle = new IntPtr(0);
bool returnValue = LogonUser(userName, domainName, pass,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
ref tokenHandle);
if (!returnValue)
throw new Exception("Logon failed.");
WindowsImpersonationContext impersonatedUser = null;
try
{
WindowsIdentity wid = new WindowsIdentity(tokenHandle);
impersonatedUser = wid.Impersonate();
}
finally
{
if (impersonatedUser != null) impersonatedUser.Undo();
}
Теперь вот интересная/странная часть. В моей сети приложение может уже получить доступ к сетевому диску, и если я попытаюсь исполнить роль активного пользователя (точно тот же пользователь, то включая тот же домен) это не сможет получить доступ к сетевому диску.
Это оставляет меня беспомощным с тех пор теперь, я понятия не имею, какие работы и что не делает, и главное, это будет работать над сайтом?
Что я пропускаю?
Править: Я забыл писать это, первоначально задавая вопрос: Я попытался ввести допустимое доменное имя, и оно не работало, так после этого я пытался ввести пустой указатель для получения того же имени пользователя, как я буду без этого кода (так как оно работает по умолчанию в нашем домене). Это не помогло, и это то, как доменное = пустой указатель; законченный в этом вопросе.
Некоторые мысли:
\\ SERVER \ Share \ Filename.ext
).Это может показаться глупым, но вы пытались изменить способ доступа к диску? {{ 1}} Возможно, установите какой-нибудь виртуальный обработчик, который позволит вам просматривать информацию на диске. Например, SSH?