Учитывая соответствующий манифест, который устанавливает uiAccess="true", должна ли программа win32 (которая отлично работает в других системах Windows7) получить действительный дескриптор от SetWindowsHookEx при работе в Windows7 (32-разрядная версия) на Mac Mini с использованием Parallels?
Это строка кода Delphi XE4, которая вызывает API
HookHandle := SetWindowsHookEx(WH_JOURNALPLAYBACK, @Playback, hInstance, 0);
Я продолжаю получать «доступ запрещен», поскольку системная ошибка возвращается в HookHandle.
Я пробовал много вариантов синтаксиса моего манифеста и серьезно задаюсь вопросом, является ли это просто некоторым ограничением среды Mac Mini/Parallels. Пользователь, вызывающий программу, является администратором. УАК включен. Я пробовал работать от имени администратора; нет разницы.
Далее следует мой файл манифеста.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="FFHotKeys" version="1.1.0.0 processorArchitecture="*"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="true"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
Я попытался установить уровень для каждого из этих
level="asInvoker"
level="requireAdministrator"
level="highestAvailable"
и это не решило проблему «отказано в доступе».
Примечание. Я включаю свой манифест через файл .rc, содержащий
1 24 "FFHotKeys.exe.manifest"
а не с помощью функции «Пользовательский манифест» в разделе «Проект» > «Параметры». У меня есть «Включить темы выполнения» и пустой настраиваемый манифест. Я пробовал по-другому, но с немного другим содержимым .manifest.
Примечание. Когда я проверяю ресурсы с помощью XN_Resource_Editor, появляется ресурс «Манифест темы XP», содержащий именно ожидаемый XML. Также есть 2 ресурса VCLSTYLE. Спасибо.
uiAccess
? - person David Heffernan   schedule 10.09.2013processorArchitecture="*"
? Кажется, я помню, как пытался это сделать один раз и обнаружил проблемы. Мой код использует amd64 или X86 в зависимости от обстоятельств. Кроме того, не очевидно, что дескриптор модуля, который вы передаете, находится в DLL, а не в приложении. - person David Heffernan   schedule 10.09.2013