Запросить пользователя для разных наборов учетных данных для разных сетевых дисков C # [duplicate]

Вы также получите эту ошибку, если забудете new:

String s = String();

в сравнении с

String s = new String();
3
задан Ben 23 February 2015 в 19:35
поделиться

2 ответа

Вы можете подключиться к общему сетевому ресурсу с помощью WNetAddConnection3 () :

    NETRESOURCE nr;

    nr.dwType = RESOURCETYPE_ANY;
    nr.lpLocalName = NULL;
    nr.lpRemoteName = dcpath;
    nr.lpProvider = NULL;

    dw = WNetAddConnection3(NULL, &nr, NULL, NULL, CONNECT_INTERACTIVE | CONNECT_PROMPT);

. Появится запрос на учетные данные. Я считаю, что строка пути должна указывать на каталог, а не на файл; обычно это будет \\server\share.

Если соединение выполнено успешно, вы можете использовать CreateFile (), чтобы открыть файл. MPR автоматически использует существующее соединение.

Вы должны использовать WNetCancelConnection () , чтобы отключиться от сервера, как только вы закончите использовать файл.

One потенциальным преимуществом такого подхода к Remy's является то, что он работает, даже если ваши учетные данные на сервере отличаются от учетных данных на локальной машине.

1
ответ дан Harry Johnston 21 August 2018 в 20:40
поделиться

Используйте CredUIPromptForCredentials() или CredUIPromptForWindowsCredentials() , чтобы получить учетные данные пользователя, затем используйте LogonUser() и ImpersonateLoggedOnUser() , чтобы выдать себя за этого пользователя, затем вызовите CreateFile() с вашим UNC-контуром, а затем, наконец, вызовите RevertToSelf() , чтобы прекратить выдавать себя за руки после закрытия файла.

4
ответ дан Remy Lebeau 21 August 2018 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: