2009-10-22 2 views
1

У меня есть клиентское приложение .NET, которое периодически прерывает соединение с UNC-ресурсом, где пользователь находится либо в домене, либо имеет локальную учетную запись с одинаковыми учетными данными на сервере. И SO, и Google имеют множество примеров использования LogonUser и WNetAddConnection через P-Invoke, но оба требуют пароль пользователя. Все, что требуется нашему приложению, - это явно открыть соединение с UNC, скопировать файл и явно закрыть соединение без предоставления учетных данных - другими словами, с использованием текущих учетных данных. Может ли кто-нибудь указать мне в правильном направлении, как это сделать на C#?Открытое/закрытое соединение с UNC без учетных данных

ответ

1

В соответствии с документацией функции WNetAddConnection2 вы можете передать Null для имени пользователя, чтобы использовать контекст пользователя для текущего процесса. Я предполагаю, что это означает, что он будет использовать контекст безопасности учетной записи, запускающей ваше клиентское приложение. MSDN также говорит, чтобы передать в Null пароль для использования пароля, связанного с любым именем пользователя.

Возможно, установка на Null будет просто волшебной работой.

+0

Спасибо за ответ, Крис. Я нашел эту часть документов и фактически попробовал это, прежде чем вы отправили сообщение. Кажется, что он работает, поскольку при передаче значения null не возникает ошибки, но мне сложно проверить, что соединение закрыто после вызова WNetCancelConnection2. Есть ли что-то, что я должен искать на сервере? – flipdoubt

+0

На сервере единственное, что приходит в голову, - это перейти в «Управление компьютером» и перейти в «Системные инструменты» -> «Общие папки» -> «Открыть сеансы» и посмотреть, есть ли доказательства подключения клиента к данному ресурсу. Если на сервере работает Windows 2008, вы можете запустить оснастку «Управление общим доступом и хранилища», чтобы увидеть ту же информацию. Я предполагаю, что сеанс появится для данного пользователя во время копирования файла, а затем исчезнет вскоре после вызова WNetCancelConnection2. Я всегда устанавливаю последний параметр этой функции в 1 для принудительного отключения. –

Смежные вопросы