У меня есть приложение, которое сохраняет свои данные на C:\ProgramData
. Это означает, что для всех пользователей используются одни и те же данные. Я хочу найти способ, чтобы разные пользователи могли иметь свое собственное отдельное пространство данных. Я использовал symlink (соединение папок), чтобы создать его в %userprofile%\Documents\AppFolder
, и метод отлично работает в моем профиле пользователя, но при попытке с другим пользователем приложение не запускается; поскольку он пытается получить доступ к C:\User\User1\Documents\AppFolder
, к которому у User2 нет доступа. Любой возможный обходной путь, чтобы разные пользователи могли ссылаться на разные символические ссылки?
1 ответ
Вы можете использовать команду subst
для сопоставления буквы диска с вашим пользовательским каталогом. Буквы дисков, созданные в subst
, для каждого пользователя, поэтому вы можете создать такое же сопоставление, что и для каждого пользователя, а затем создать символическую ссылку на эту букву диска. Или просто укажите программу на подключенный диск через его настройки.
Пример:
subst %userprofile% v:
mklink /d c:\ProgramData\AppFolder v:\Documents\AppForder
Недостатком этого решения является то, что сопоставленные буквы дисков не являются постоянными, поэтому их приходится создавать заново каждый раз, когда пользователь входит в систему (например, путем добавления ярлыка для команды subst
в %appdata%\Microsoft\Windows\Start Menu\Programs\Startup
. Или вы можете сделать командный файл, который будет запускать subst
а затем вашу программу.
Альтернативным решением является запуск программы в изолированной среде (например , Sandboxie).Это не будет работать, если программа пытается сделать что-то низкоуровневое (например, установить драйверы или службы). Также вам придется восстанавливать файлы, созданные программой из песочницы, после каждого запуска вам нужно использовать их в другом месте.