в этих других ответах есть несколько хороших моментов.
на самом деле я проголосовал за все из них.
так что давайте все объединим их вместе и добавим ещеаспект ...
ОП упоминает о каком-то "устаревшем приложении старых времен".
, поэтому мы можем предположить, что это x86 (32 бита), а также не включает какой-либо манифест (и, в частности, не указывает никакой "требуемый уровень_выполнения").
-
Роман Р. имеет хорошие моменты в своем ответе относительно файлов x64
и manifest
:
https://stackoverflow.com/a/8853363/1468842
, но все эти условия, кажется, не применяются в этом случае.
NovHak обрисовывает в общих чертах примерно AppCompatFlags
с RUNASIVOKER
в своем ответе:
https://stackoverflow.com/a/25903006/1468842
Диего Кейроз добавляет интересный аспект относительно флага read-only
в своем ответе:
https://stackoverflow.com/a/42934048/1468842
Ян Бойд заявляет, что, вероятно, вам даже не стоит идти на эту «виртуализацию», а вместо этого установить в соответствии ACL
на эти файлы, представляющие интерес (например, «config»)..ini "):
https://stackoverflow.com/a/12940213/1468842
и вот здесь добавляется дополнительный / новый аспект:
можно установить policy
в отключить вся виртуализация - для всей системы:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableVirtualization"=dword:00000000
на самом деле я применяю эту политику на каждой системе, которой я владею.
, потому что в противном случае это приведет к сбивающему с толку поведению на multi-user
окружения.
, где UserA применяет некоторые изменения, и все идет хорошо.
, но затем UnserB не получает изменения, сделанные UserA.
в случае сбоя какого-либо старого дрянного программного обеспечения оно должно «сработать»!
и не утверждать, что все прошло «отлично».
ИМХО эта штука с «виртуализацией» была наихудшим дизайнерским решением Microsoft,когда-либо.
так, может быть, в системе включена эта политика, и поэтому виртуализация не работает для вас?
-
, поэтому, вероятно, окончательный контрольный список будет:
- - это приложение x86 или x64 ?
- есть ли у файла манифест (включая
requestedExecutionLevel
)? - Вы проверили атрибут только для чтения (например, из этих файлов INI)?
- существует ли политика , чтобы заставить
EnableVirtualization
0
? - иметьвы пробовали AppCompatFlags с
RUNASIVOKER
? - или просто выбрали ACL вместо виртуализации
-
В конце мы обсуждаем, как запустить старое унаследованное приложение.
Используя любые обходные пути и хаки, которые мы можем придумать.
Это, вероятно, лучше обсудить на superuser
или serverfault
.
на stackoverflow
(нацелен на programmers
), мы все знаем: пора привести все наши собственные программы в соответствие с концепцией UAC и как реализовать вещи «правильным» способом - «Microsoft»кстати :)