Различная символическая ссылка для разных пользователей в Windows

1

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

Кушик Хасан Тону
источник
1
Что это за приложение? Может быть, вы можете изменить это в настройках приложения?
NieDzejkob
Я старался. Приложение записывает свои настройки в INI-файл в каталоге программы. Если INI-файл может быть символической ссылки, я думаю, что проблема может быть решена тоже. (Но должны быть две разные символические ссылки для двух пользователей). Это приложение частной компании, и разработчик этого приложения недоступен.
Кушик Хасан Тону

Ответы:

0

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

Пример:

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

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

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

Темный Даскин
источник
Спасибо за ваш ответ, и метод subst кажется многообещающим, но я немного запутался. Поскольку я хочу сохранить логин и другие данные для двух пользователей раздельно, следует ли сопоставлять разные диски для разных пользователей? V для пользователя1, W для пользователя2? Или такой же? Если то же самое, не заменит ли он существующие данные для другого пользователя?
Кушик Хасан Тону
Оба пользователя будут иметь одинаковую букву диска, но она будет указывать на разные каталоги. Симлинк не изменится.
Темный Даскин