Simply do not use explicit verb. Using a specific verb like 'open' is a big mistake:
- 'open' may be not a default verb (for example, it may be 'play', 'edit' or 'run')
- 'open' may not exists
It is a way more correct to simply pass nil as verb. The system will automatically select most appropriate verb:
- Default verb will be used, if it is set
- 'open' verb will be used, if no default verb is set
- first verb will be used, if no default and 'open' verbs are available
- if no verbs are assigned - the system will bring "Open with" dialog
In other words, simple
ShellExecute(0, nil, 'C:\MyFile.StrangeExt', ...);
will show "Open with" dialog.
Only use a specific verb if you want a specific action. E.g. 'print', 'explore', 'runas'. Otherwise - just pass nil.