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