Ну тогда либо учетка с одинаковыми логинами\паролями, либо домен, либо WNetAddConnection2, либо net use\сетевые диски
WNetAddConnection2 работает, но имеет одну нехорошую особенность:
При попытке подключении к серверу вываливается исключение "Множественное подключение к серверу или разделяемым ресурсам одним пользователем с использованием более одного имени пользователя неразрешено, отключите все предыдущие подключения к серверу или разделяемым ресурсам и повторите."
Для обхода этого исключения, перед коннектом, надо вызывать WNetCancelConnection2, которая закрывает все соединения к нужному ресурсу. При этом другие программы, висящие на заднем плане и имеющии открытые файлы из этого ресурса, ничего не знают о закрытии этого соединения. В итоге их поведение становится весьма неадекватным (как у собаки, из пасти которой вырвали сахарную косточку
)
Решение нашлось, причем для этого совсем не нужно создавать ни одинаковые учетки ни домен. Достаточно одной учетки на сервере.
Как ни странно, решение - LogonUser, которая несмотря на заявление о невозможности залогинится на удаленном компе, все же позволяет это сделать. Косвенно об этом говорится в описании константы LOGON32_LOGON_NEW_CREDENTIALS параметра dwLogonType. Описание звучит примерно так:
- Код: Выделить всё
Этот тип входа позволяет вызывающему клонировать его текущий токен и определить
новый мандат(credentials) для исходящих подключений. Новый сеанс входа в систему
имеет тот же самый локальный идентификатор, но использует отличный мандат для других
сетевых подключений.
NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider.
NOTE: Windows NT: This value is not supported.
Найденоое решение проверил, оно прекрасно работает и полностью удовлетворяет поставленной задаче. Спасибо всем за участие.