Delphi 如何允许一个可执行文件在沙盒AcROCAT阅读器席阻止它时启动PDF

Delphi 如何允许一个可执行文件在沙盒AcROCAT阅读器席阻止它时启动PDF,delphi,Delphi,My setup.exe安装多个文件,包括一个可执行文件。 当我要求这个可执行文件启动一个带有“ShellExecute…pdf”的帮助文件时,它不会发生任何可见的情况,但在任务管理器中,我可以看到Acrobat Reader已经启动。 但它被卡住了,无法再启动,甚至无法手动启动,直到我删除了冻结的进程。 解决方案是什么?几乎可以肯定,该问题已在评论中讨论过。也就是说,安装程序以提升管理员的身份运行,而现代Acrobat Reader在以提升管理员的身份执行过程时不会打开文档 您可以使用一个简单

My setup.exe安装多个文件,包括一个可执行文件。 当我要求这个可执行文件启动一个带有“ShellExecute…pdf”的帮助文件时,它不会发生任何可见的情况,但在任务管理器中,我可以看到Acrobat Reader已经启动。 但它被卡住了,无法再启动,甚至无法手动启动,直到我删除了冻结的进程。
解决方案是什么?

几乎可以肯定,该问题已在评论中讨论过。也就是说,安装程序以提升管理员的身份运行,而现代Acrobat Reader在以提升管理员的身份执行过程时不会打开文档

您可以使用一个简单的程序轻松地检查这一点,该程序只需调用
ShellExecute
即可打开相关文档。以标准用户身份运行程序,查看调用
ShellExecute
会发生什么。然后以管理员身份运行该程序,并检查文档是否无法打开


解决方案是让您以标准用户身份运行程序。从一个提升的过程中安排这件事并不容易。这涉及到相当多的骚动。这个MSDN文章是我在这个主题上知道的最好的信息源:代码是C++提供的,但是因为它几乎完全是Win32 API调用,所以它应该是一个琐碎的转换任务。绝对不适合心脏虚弱的人。您确定要首先执行此操作吗?通常不赞成接管鼠标光标的所有权。您可以通过
IFolderView::GetItemPosition
方法获取鼠标光标的左上角位置。哦,当然,当您访问
IFolderView
界面时,您也可以选择一个项目@500,没那么难。您只需查询几个接口…为什么要这样做?我想这样做,因为:安装我的程序时,它会将一些文件放在文件夹中,包括一个可执行文件,该文件在安装结束时自动启动帮助文件。此可执行文件运行经典的“ShellExecute…Aide.pdf…”在XP、W7、W8、W8席上,所有的工作都很好,ActoBAT阅读器可以达到XI版本,现在包括了增强保护。