I do not think you can completely disable it in the code; If you could do this, it would surpass all the goals of Protected Mode (preventing the use of malware to associate .pdf files). However, you can work on this legal way. :)
I suspect this is due to the open verb that you use with ShellExecute . You assume (possibly incorrectly) that the verb open does the same thing in protected mode on Win7 as in previous versions of Adobe Reader and Windows. ( NOTE : I do not have such a version of Acrobat installed on my system, these are all assumptions.)
The first thing I will try is to change the ShellExecute call as follows:
ShellExecute(0, nil, PChar(pdfFile), nil, nil, SW_NORMAL);
The first change is to pass nil as the second parameter. This tells Windows what you want it to happen by default. It could be, for example, view instead of open .
I also changed two parameters after the file name to zero. This is more readable than using an empty string ('').
The final change is in the last parameter; I usually use SW_NORMAL instead of SW_SHOW , simply because it tells Windows to show it regardless of its default size and position; it may be something saved by the application and enforce user settings (if any).
If this does not work, the time will come to scroll ( carefully !! ) in the Windows registry. Open regedit in the Start menu search and go to HKEY_CLASSES_ROOT. Scroll through the list of files until you find an entry for .pdf and double-click this branch. You will see Default , which (on my system, anyway) AcroExch.Document with Content Type from application/pdf .
Continue down the tree in the left pane until you find AcroExch.Document , and expand it. You will see several values (again, from my car), as you can see in the image below. Expand the Shell branch and you will see certain verbs, as well as the command associated with them. On my machine (again) I have one verb open , the command of which is set to "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe" "%1" .


(The bear is with me - we are almost there. I promise.)
You can see that double-clicking does differently, learning the default value (click Shell in the left pane, and then see what is set as (Default) to the right. Then look at the command line (in the second image above, it's open ), to see which switches, if any, are transferred to the Acrobat Reader application (if you cannot determine which one by default, right-click the .pdf file in Windows Explorer and see if the bold item is in the context menu.)
If a parameter other than "%1" passed, you need to add the same parameter to the command line provided in ShellExecute . For example, if the option is /v , you should change your call to ShellExcute something like this:
ShellExecute(0, nil, PChar(pdfFile), PChar('/v'), nil, SW_NORMAL);