В Windows XP есть встроенный набор исправлений и база данных исправлений, а со всем этим можно работать с помощью Application Compatibility Toolkit (или ручной правкой реестра).
Чаще всего отсюда использую готовый профиль исправления под названием LUA (Limited User Account), которое содержит следующее:
LUARedirectFS
Цитата Описание:
This compatibility fix redirects files to %SystemDrive%\Documents and Settings\username\LocalAppData\Redirected\drive\filepath when the application needs to write to them but doesn't have the appropriate access rights.
|
LUARedirectReg
Цитата Описание:
Applications may incorrectly attempt to write to the HKEY_LOCAL_MACHINE portion of the registry. This compatibility fix redirects the registry keys to the HKEY_CURRENT_USER hive when the application doesn't have the necessary permissions.
|
Также чтобы по-быстрому запустить приложение с этим готовым профилем, я создал такой твик реестра, который создаёт новое контекстное меню "Запустить с LUA Fix"
Код:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runasluafix]
@="Запустить с LUA Fix"
[HKEY_CLASSES_ROOT\*\shell\runasluafix\command]
@="cmd /C \"REG ADD \"HKCU\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /t REG_SZ /d LUA && start \"\" \"%1\" && REG DELETE \"HKCU\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f\""
Принцип действия такой же, как я описывал в
Разное - [решено] Запуск программ с включенным UAC без повышения прав, только вместо исправления RUNASINVOKER я использую LUA.
Но заметил разногласие работы
LUARedirectFS. А именно он перенаправляет запись в ..\All Users\.., вместо текущего пользователя. Из-за чего ограниченный пользователь не может записывать сюда данные так как права доступа по-умолчанию не позволяют это сделать, но переправлять права доступа тоже не решение - нужно чтобы записывалось в папку пользователя.
Исправил данную проблему лишь более жёстким способом - после того, как заметил с помощью Process Explorer, что при включении данного исправления просто происходит инъекция AcLua.dll, я данный файл открыл редактором байтов, нашёл Unicode-строку
%ALLUSERSPROFILE%\Application Data\Redirected и поменял на
%USERPROFILE%\Application Data\Redirected. Но я не понимаю, почему данное исправление работает не так, как задумано, ведь в оригинальном файле встречается путь
%USERPROFILE%\Application Data\Redirected
OS: Windows XP PRO SP3 RUS с обновлениями и без обновлений также.