Windows 10 如何在Windows 10上使用Inno设置打开PDF?
如何在Windows 10上从Inno安装程序打开PDF?我正在尝试显示帮助文档,而我使用的()技术以及适用于Windows 7的技术在Windows 10上运行时不会导致任何问题(文件不会打开,并且不会报告错误消息) 具体来说,当尝试在需要提升权限的安装程序中打开PDF时(在使用Windows 10 如何在Windows 10上使用Inno设置打开PDF?,windows-10,inno-setup,Windows 10,Inno Setup,如何在Windows 10上从Inno安装程序打开PDF?我正在尝试显示帮助文档,而我使用的()技术以及适用于Windows 7的技术在Windows 10上运行时不会导致任何问题(文件不会打开,并且不会报告错误消息) 具体来说,当尝试在需要提升权限的安装程序中打开PDF时(在使用ShellExec()在自定义代码部分安装之前,或在使用ShellExec标志在[Run]部分安装之后),它将生成2个Adobe进程,但不会打开任何窗口(此外,在手动终止这些进程之前,无法打开其他PDF)。但是,如果:
ShellExec()
在自定义代码部分安装之前,或在使用ShellExec
标志在[Run]
部分安装之后),它将生成2个Adobe进程,但不会打开任何窗口(此外,在手动终止这些进程之前,无法打开其他PDF)。但是,如果:
ExtractTemporaryFile('test.pdf');
ShellExec('打开',
AddQuotes(ExpandConstant({tmp}\test.pdf'),'','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
我怀疑特权有问题,因为根据安装程序的启动方式(例如,从已提升的进程到启动后提升),结果会有所不同
使用ShellExecAsOriginalUser
工作。例如:
ExtractTemporaryFile('test.pdf');
ShellExecutaOriginalUser('打开',
AddQuotes(ExpandConstant({tmp}\test.pdf'),'','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
我不知道这是否是一个bug或预期的功能,
ShellExec
在Windows 10上不起作用,而ShellExecAsOriginalUser
起作用。在以管理员身份运行时,可能没有为动词open注册shell命令。您是否只是尝试传递'
?(这也解释了为什么ShellExecAsOriginalUser
在ShellExec
不工作时工作-非管理员为PDF文件分配了打开动词操作。)较新Acrobat Reader版本的默认操作是读取,而不是打开,使用空字符串将导致它使用默认操作。运气不好,将'
传递到ShellExec
会得到相同的结果。不过,很高兴知道读取是新的默认操作,谢谢。您应该使用ShellExecaOriginalUser
fr从一开始,你就不想运行任何具有提升权限的应用程序,除非应用程序需要它。PDF viewer也不需要。