我正在尝试让科学仪器在 Windows 10 上运行的非常旧的程序。我相信该程序最初是为某些 Unix 系统开发的,然后通过使用 Unix 模拟器移植到 Windows NT 之类的系统上。该程序可以在 Windows XP 上运行,但由于安全策略的变化,不能在更高版本上运行。
我想升级到 Windows 10,并且我已经设法让程序在 Windows 10 上运行,但只能在我绝对不能在计算机上使用的管理员权限下运行。我知道我可以运行虚拟机,但如果可以的话,我想避免它。我也无法升级到不同的 Unix 模拟器,因为程序和模拟器是如此紧密地相互连接。兼容模式也不起作用。
使用 API Monitor,我发现该程序需要管理员权限,因为它试图创建全局内存部分,我认为这些部分用于模拟器和程序之间的通信,这需要SeCreateGlobalPrivilege
只有管理员才能拥有。由于安全策略,我无法将权限授予用户帐户。
使用 API Monitor,我尝试在有问题的全局Kernel32.dll
调用CreateFileMappingA
、CreateSemaphoreA
、处插入断点CreateMutexA
,CreateEventA
并手动将它们从全局更改为本地,这似乎可以使程序正确运行。
有没有办法永久修补/挂钩/拦截Kernel32.dll
本地而不是全局的调用?