I have faced a strange thing...and I don't understand what is going

I have a program where I - at first - used registry to get the system
virtual roots. And also a button - like customer support. If I push
the button some url must be openen using web browser. Here is what the
button code is:

if(32 >= (int) ShellExecute(NULL, NULL, CUST_SUPP, NULL, NULL,
Everything worked just fine.

Later I have made some changes - regarding the virtual roots. Now I
get them using IMSAdminBase. Everything works fine there. But after
that update ShellExecute returns SE_ERR_ACCESSDENIED.
But if I change the abovementioned code to:

if(32 >= (int) ShellExecute(NULL, "open", "IExplore.exe", CUST_SUPP,
it again works OK and opens the site.

What's the trick here? Can anyone help?