解决方法
ShellExecute的错误处理是一种灾难. Raymond Chen在这里讨论它:
Why does ShellExecute return SE_ERR_ACCESSDENIED for nearly everything?因此,即使您可以将少数可能的ShellExecute错误转换为文本,您也会发现您总是被拒绝访问.这不是很有帮助.
最重要的是,如果你想要真正的错误报告,那么你需要使用ShellExecuteEx
.如果失败,你调用GetLastError来获取Win32错误.要使用描述性文本将其转换为例外,请调用RaiseLastOSError.如果您只想要与错误关联的描述性文本,请调用SysErrorMessage.