Приложение VB6 в Windows 7 не может получить доступ к подключенным дискам - PullRequest
9 голосов
/ 11 января 2012

У меня есть приложение VB6, которое связывается с несколькими POS-терминалами с 32-разрядной машины Windows 7. POS-терминалы отображаются на компьютере с Windows 7, и я могу получить доступ к POS-терминалам с компьютера с Windows 7 из Проводника или с помощью cmdline / shell.

Приложение обновлено до ADO 2.8, и все другие элементы управления и компоненты, для которых у меня больше не было исходного кода, были переписаны. После нескольких раздражающих сбоев я получил приложение для перекомпиляции на компьютере с Windows 7 без ошибок.

Теперь проблемы. Приложение VB6 не может видеть или переходить на любые подключенные диски! Я попытался изменить настройки UAC; Я настроил приложение для запуска в режиме Windows XP SP3; Я пытался работать от имени администратора. Ни одна из этих вещей (и многие их перестановки) не работают.

Любые предложения о том, как сделать эту работу?

Ответы [ 3 ]

10 голосов
/ 25 июня 2012

Добавление этого параметра реестра решило проблему для меня: http://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx.

Чтобы обойти эту проблему, настройте EnableLinkedConnections значение реестра. Это значение позволяет Windows Vista и Windows 7 совместно использовать сетевые соединения между отфильтрованным токеном доступа и токен полного доступа администратора для члена Администратора группа. После настройки этого значения реестра LSA проверяет, есть еще один токен доступа, связанный с текущим пользователем сеанс, если сетевой ресурс сопоставлен с токеном доступа. Если ЛСА определяет, что есть связанный токен доступа, он добавляет сеть поделиться в связанном месте. Чтобы настроить EnableLinkedConnections значение реестра

  1. Нажмите Пуск, введите regedit в поле Пуск программ и файлов и затем нажмите ENTER.

  2. Найдите и щелкните правой кнопкой мыши раздел реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System.

  3. Укажите значение «Новый» и нажмите «Значение DWORD».

  4. Введите EnableLinkedConnections и нажмите клавишу ВВОД.

  5. Щелкните правой кнопкой мыши EnableLinkedConnections и выберите команду Изменить.

  6. В поле Значение введите 1 и нажмите кнопку ОК.

  7. Закройте редактор реестра и перезагрузите компьютер.

5 голосов
/ 11 января 2012

Я полагаю, что у вас возникли проблемы, поскольку случайное сопоставление дисков выполняется для каждого пользователя, а в группе администраторов системы UAC пользователи имеют два отдельных контекста (по одному для каждого токена: SU & повышенные).

Существует такая вещь, как сопоставление дисков системного уровня, которое выполняется пользователем системы (NT Authority \ System). Когда вы сопоставляете диск с этой учетной записью и постоянно сопоставляете его, все пользователи могут видеть и использовать сопоставление (при условии наличия там обычных прав доступа к файлам).

Обычный способ сделать это - использовать GPO на уровне домена (объекты групповой политики), что означает подкуп ваших локальных блочных жокеев в корпоративной среде управляемой локальной сети.

Один из способов сделать это на компьютере рабочей группы - сопоставить букву как Систему с помощью команды AT из командной строки с повышенными правами :

at 8:53 am "net use m: \\MediaShare\MyLibrary
    ThePW /user:MediaShare\TheUser /persistent:yes > nul"

Там удаленный сервер - MediaShare, пользователь TheUser, пароль ThePW, и в 8:53 утра - одна или две минуты в будущем, чтобы избежать случайного планирования этого на завтра.

Но это не удается в Vista и позже из-за изоляции сеанса 0!

Итак ... используйте третью альтернативу на Запустите CMD.exe в качестве учетной записи локальной системы , что то же самое, что указано в ответе ForcePush на Как сопоставить сетевой диск для использования обслуживание .

Я верю, что это то, что вы после здесь.

0 голосов
/ 25 июня 2015

не знаю, понимали ли вы это когда-нибудь, но для меня это была команда ChDir (даже с исправлением реестра выше).

Я имел в своем коде

ChDir "P:\Temp\VidCap\Cam1\" 'I almost never use ChDir Open "list.txt" For Output As #1

и все команды встроенного файла VB6 выглядели прямыми, хотя любые операции, без ошибок, без ничего. Я решил это, явно указав путь (в моем коде он был в строке, но вы могли бы указать его явно):

dd = "P:\Temp\VidCap\Cam1\" Open dd & "list.txt" For Output As #1 работает как положено.

надеюсь, это поможет

H

...