1

У меня есть приложение, которое сохраняет свои данные на C:\ProgramData . Это означает, что для всех пользователей используются одни и те же данные. Я хочу найти способ, чтобы разные пользователи могли иметь свое собственное отдельное пространство данных. Я использовал symlink (соединение папок), чтобы создать его в %userprofile%\Documents\AppFolder , и метод отлично работает в моем профиле пользователя, но при попытке с другим пользователем приложение не запускается; поскольку он пытается получить доступ к C:\User\User1\Documents\AppFolder , к которому у User2 нет доступа. Любой возможный обходной путь, чтобы разные пользователи могли ссылаться на разные символические ссылки?

1 ответ1

0

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

Пример:

subst %userprofile% v:
mklink /d c:\ProgramData\AppFolder v:\Documents\AppForder

Недостатком этого решения является то, что сопоставленные буквы дисков не являются постоянными, поэтому их приходится создавать заново каждый раз, когда пользователь входит в систему (например, путем добавления ярлыка для команды subst в %appdata%\Microsoft\Windows\Start Menu\Programs\Startup . Или вы можете сделать командный файл, который будет запускать subst а затем вашу программу.

Альтернативным решением является запуск программы в изолированной среде (например , Sandboxie).Это не будет работать, если программа пытается сделать что-то низкоуровневое (например, установить драйверы или службы). Также вам придется восстанавливать файлы, созданные программой из песочницы, после каждого запуска вам нужно использовать их в другом месте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .