Можно ли использовать сохраненные учетные данные Windows для пользователя и пароля в WNetAddConnection2W?

После интерактивного входа в Windows подключенные сетевые диски с сохраненными учетными данными автоматически подключаются. Если в удаленной сети используется другой пользователь, эти учетные данные извлекаются из диспетчера учетных данных Windows как «Учетные данные Windows».

Я пытаюсь добиться того же в процессе, созданном командой CreateProcessWithLogon. В этом случае можно идентифицировать запомненные связи по WNetOpenEnum с областью действия RESOURCE_REMEMBERED. По WNetGetConnection можно понять, какие из этих ресурсов не подключены.

Команда WNetAddConnection2W позволяет осуществить это соединение. Можно использовать пользователя и пароль по умолчанию, чтобы можно было подключить подключенные к ним сетевые диски. Их также можно предоставить в виде строк, но похоже, что нет возможности заставить эту команду читать учетные данные из диспетчера учетных данных Windows, даже несмотря на то, что существуют флаги для их хранения.

Поэтому я попытался сделать это с помощью CredEnumerate или CredRead, которые могут получить учетные данные, но полученное CREDENTIALW.CredentialBlobSize равно 0, а CredentialBlob равно NULL.

Поскольку WNetAddConnection2W содержит флаги для хранения введенных учетных данных в диспетчере учетных данных, кажется логичным, что вы также можете их использовать. Но мне не удалось понять, как это сделать.

Я надеюсь, что кто-нибудь может дать мне совет, как решить эту проблему.

🤔 А знаете ли вы, что...
Язык C++ имеет возможность работы с файлами и потоками данных.


1
58
1

Ответ:

Решено

Тем временем я понял, что учетные данные домена не могут быть получены по замыслу, их можно только записать: https://learn.microsoft.com/en-us/windows/win32/secauthn/kinds-of-credentials

Поэтому невозможно достичь того, что я пытался.