Member 13627097 Ответов: 1

Regopenkeyex return потерпел неудачу в приложении, но перешел из режима отладки


Привет,

У меня есть случай, когда я хочу открыть диалоговое окно, которое позволит выбрать файл с локального диска или подключенного сетевого диска.

Он работает нормально в режиме отладки. Но когда я выпускаю программное обеспечение (Installshield), сетевой диск не отображается в открытом диалоговом окне.

lEr =  RegOpenKeyExW(hKeyUser, L"Network", 0, KEY_READ|KEY_ALL_ACCESS, &hKeyNet);


Эта линия шоу не удалась. Возвращено 2. но запуск в режиме отладки-это нормально.
так что я гарантирую, что ключ там.

Есть зацепка?

Спасибо

Что я уже пробовал:

Я попытался создать ключ "EnableLinkedConnections" со значением 1. Но тогда подключенный сетевой диск все еще не отображается из моего установленного приложения.

1 Ответов

Рейтинг:
1

Richard MacCutchan

Он может быть действителен в вашей системе, но не может быть в других системах. Я только что проверил свою машину, и ключ там, но ничего не содержит. Вы не должны использовать реестр таким образом, так как записи реестра не гарантируются.

Вы должны позволить пользователю перейти в нужное место из диалогового окна.


Member 13627097

У меня есть несколько подключенных сетевых дисков (пример: X:, Y:, Z:).
Но потом, когда я нажимаю кнопку Открыть из своего приложения.
В открывшемся диалоговом окне отображаются не все эти сетевые диски, а только локальный диск. (С:)

Я действительно пробовал работать в режиме отладки, и все подключенные диски отображаются. Но когда я выпускаю программное обеспечение (сборка с помощью Installshield), сетевой диск исчезает из открытого диалогового окна.

Пробовал с EnableLinkedConnections, а также с учетной записью пользователя, но не работает.

любое решение поможет в этом вопросе?
Ценю, Спасибо.

Richard MacCutchan

В диалоговом окне должны быть показаны все диски, сопоставленные в файловой системе пользователя. У меня нет никаких сетевых дисков в моей системе, поэтому я не могу проверить его здесь. Возможно, если вы покажете нам какой-то код, мы сможем что-то обнаружить, но трудно быть уверенным, так как проблема может быть уникальной для вашей системы.

Member 13627097

я делаю файл журнала, и вот строка показывает ошибку.

lEr = RegOpenKeyExW(hKeyUser, L"Network", 0, KEY_READ|KEY_ALL_ACCESS, &hKeyNet);

возвращаемое значение 2-это путь к файлу, который не найден. Но я почти уверен, что ключ там. поскольку работа в режиме отладки-это все в порядке.

Richard MacCutchan

Используйте regedit, чтобы проверить наличие ключа. Однако, как уже объяснялось, вы не должны использовать это. Пользователь может легко перейти к любым подключенным сетевым дискам из диалогового окна.

Member 13627097

уже проверили ключ от regedit.

Любой другой метод для этого.?

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

Richard MacCutchan

Что ты имеешь в виду? В диалоговом окне открыть файл отображаются файлы в каталоге, в котором начинается поиск. Пользователь может перейти в любой другой каталог или диск по своему выбору. Сам диалог этим не управляет.

Member 13627097

У меня есть несколько подключенных сетевых дисков. а из файла explore я могу видеть и получать доступ к этим подключенным дискам.

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

Richard MacCutchan

Извините, но невозможно угадать, что может делать ваш код. Проверьте все параметры в классе open dialog на случай, если вы запретили ему просматривать сетевые диски.

Member 13627097

есть ли у вас какое-нибудь другое решение?

Вы имеете в виду не использовать эту ссылку для проверки?

Richard MacCutchan

Решение чего? Мы до сих пор понятия не имеем, что делает ваш код.