Проблемы с пользователем / паролем в GetVolumeNameForVolumeMountPoint () (удаленное подключение Windows?) - PullRequest
2 голосов
/ 23 июня 2011

На рабочей станции Vista у меня есть подключенный компьютер XP Embedded, на котором я хочу программно подключить том локально (например, смонтировать XP Embedded \\MyXPEmbedded\C:\some\path\ на рабочую станцию ​​Vista (смонтированную на C:\mounted_XPEmbedded\).

(Это административная утилита, которая работает на рабочей станции Vista и поддерживает файлы на рабочей станции XP Embedded, которая является частью более крупного устройства.)

Я могу увидеть Встроенный компьютер XP с рабочей станции Vista. Например, я могу ::getnameinfo() разрешить имя компьютера со встроенным XP из его IP-адреса.

Однако все вызовы GetVolumeNameForVolumeMountPoint() завершаются неудачно (возвращает false), при этом форматированное сообщение от ::GetLastError():

Logon failure: unknown user name or bad password

Очевидно, что это проблема с разрешениями. Тем не менее, я не вижу обсуждения в API Microsoft, как я могу предоставить пользователя / пароль через эти API-интерфейсы GUID тома.

При «просмотре» XP Embedded из проводника Windows на рабочей станции Vista путем ввода IP-адреса компьютера с установленным XP в адресную строку мне предлагается ввести имя пользователя и пароль, после чего я могу видеть все на XP Embedded ( Дух! Как мне обеспечить это программно?)

ВОПРОС: Как программно предоставить логин / пароль пользователя при работе с API-интерфейсами GUID пути (и в частности ::GetVolumeNameForVolumeMountPoint())?

Часть проблемы может заключаться в том, что эти компьютеры не разделяют один и тот же домен (они не могут, компьютер Vista будет добавлен в домен клиента, XP Embedded должна быть «скрыта»).

Другая информация, которая, вероятно, не важна:

  • Рабочая станция Vista и XP Embedded не используют один и тот же домен (они не могут)
  • Приложение работает на рабочей станции Vista под учетной записью с правами администратора (я полагаю, это требуется?)
  • Эта административная учетная запись Vista отсутствует на компьютере XP Embedded (XP Embedded имеет другую учетную запись администратора)
  • Часы между обоими компьютерами являются текущими (учетные данные безопасности должны работать)
  • Рабочая станция Vista имеет две сетевые карты, одна из которых подключается непосредственно к встроенному блоку XP, который имеет только одну сетевую карту
  • Использование C ++, MSVS2008

БОНУСНЫЙ ВОПРОС: Было бы неплохо, если бы я мог запустить эту административную утилиту на рабочей станции Vista без административных разрешений, возможно ли это? (Я знаю административный логин / пароль для встроенной XP.)

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

Позвоните по номеру WNetAddConnection2, прежде чем пытаться получить доступ к общим ресурсам во встроенной коробке.Возможно, вам потребуется имя пользователя в виде MyXPEmbedded\[admin username].

. Вы можете столкнуться с проблемами, если ранее уже пытались подключиться к встроенному устройству.Чтобы удалить любое из длительных соединений, которые вы можете использовать, из командной строки - net use с опцией /delete.Вы также можете поиграть с установлением соединения с использованием сети перед запуском вашей программы в целях отладки.

Что касается запуска без администраторских привилегий, которые в основном будут связаны с тем, где вы решили сделать локальную точку монтирования, но вы, вероятно, можете обойтись, просто используя путь UNC ,Используя стандартные административные ресурсы (которые включены, если «использовать простой общий доступ к файлам» отключен), вы можете получить доступ к встроенной системе, используя что-то вроде \\MyXPEmbedded\c$\some\path.

2 голосов
/ 25 июня 2011

Возможно, вам нужно установить хотя бы одно соединение SMB (именованный канал / файловый ресурс) с рабочей станции Vista на рабочую станцию ​​XP, на любой общий ресурс с достаточными правами, например, \\ myXP \ what или \\ myXp \ c $ или даже \\ myXP \ icp $, прежде чем можно будет открыть любой сетевой путь для компьютера "myXP".

Вы можете сделать это программно, используя функцию WNetAddConnection2 с именем пользователя и паролем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...