Как узнать имя папки с общими документами на сетевом компьютере - PullRequest
5 голосов
/ 20 мая 2011

Учитывая, что я выполняю EXE-файл (приложение D2006) на компьютере по сети, как я могу получить путь к папке commondocs на этом компьютере, учитывая, что EXE-файл мог быть вызван с помощью ярлыка UNC или ярлык сопоставленной буквы диска, и платформа удаленной машины не обязательно известна (но будет> = WinXP)?

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

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

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

1 Ответ

10 голосов
/ 20 мая 2011

Машина, на которой работает , ваша программа - единственная машина, к которой у вас есть доступ. Компьютер, на котором хранится ваша программа , не имеет значения. Это просто дисковод. Возможно, не работает Windows. Это может быть даже NAS, на котором почти ничего не работает.

Если клиент хочет, чтобы папка общих документов файлового сервера действовала как папка общих документов для всех на всех клиентских системах, тогда попросите системного администратора настроить общую папку на сервере, а затем configure клиенты используют эту удаленную папку в качестве папки общих документов . Для этого вам не нужно никакого специального программирования.

Чтобы получить папку с общими документами на машине, на которой работает ваша программа, вы можете вызвать любую из различных функций API, включая ShGetFolderPath. Необходимое значение CSIDL равно CSIDL_COMMON_DOCUMENTS. Если вы звоните SHGetKnownFolderPath вместо этого, используйте FOLDERID_PublicDocuments.

...