Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Vista Newsgroups > Vista General

Vista - Weird behavior of ShellExecute on Vista

Reply
 
Old 04-15-2008   #1 (permalink)
Mihai Ciumeică


 
 

Weird behavior of ShellExecute on Vista

Greetings, everyone. I apologize in advance if the question is off-topic in
here, but the only newsgroup here specifically about Windows Vista registry
is in German. So, here goes.

I'm developing an application that must at one point launch a user-given
file. So I open the registry, look under HKCR\{name of file type}\shell, get
the name of the default verb ('Play' for video files etc.), then look up the
appropriate handler (the program executable) in the verb's subkey, check if
I can launch the handler and then do so. Later I might, with the user's
permission, change it to another program, or add my own verb, or whatever.

The problem is, under Vista, these verbs don't work. They don't even show up
in the context menu. For example, when I right-click a video file, the
default action is 'Open', which launches my VLC media player. The default
action in HKCR\avifile\shell is 'Play', and the handler under
HKCR\avifile\shell\play\command is wmplayer.exe. I'm guessing the fact that
the 'command' key has a value called 'LegacyDisable' has something to do
with it.

So my question is, where exactly in the registry does ShellExecute look for
the default verb and its handler?

Thank you for your time.


My System SpecsSystem Spec
Old 04-15-2008   #2 (permalink)
Jon


 
 

Re: Weird behavior of ShellExecute on Vista

"Mihai Ciumeică" <cmihai@xxxxxx> wrote in message
news:OvoR5W0nIHA.3804@xxxxxx
Quote:

> Greetings, everyone. I apologize in advance if the question is off-topic
> in here, but the only newsgroup here specifically about Windows Vista
> registry is in German. So, here goes.
>
> I'm developing an application that must at one point launch a user-given
> file. So I open the registry, look under HKCR\{name of file type}\shell,
> get the name of the default verb ('Play' for video files etc.), then look
> up the appropriate handler (the program executable) in the verb's subkey,
> check if I can launch the handler and then do so. Later I might, with the
> user's permission, change it to another program, or add my own verb, or
> whatever.
>
> The problem is, under Vista, these verbs don't work. They don't even show
> up in the context menu. For example, when I right-click a video file, the
> default action is 'Open', which launches my VLC media player. The default
> action in HKCR\avifile\shell is 'Play', and the handler under
> HKCR\avifile\shell\play\command is wmplayer.exe. I'm guessing the fact
> that the 'command' key has a value called 'LegacyDisable' has something to
> do with it.
>
> So my question is, where exactly in the registry does ShellExecute look
> for the default verb and its handler?
>
> Thank you for your time.


When you right-click a .avi file it first looks at the default key at

HKEY_CLASSES_ROOT\.avi

to determine where to subsequently jump to ie

HKEY_CLASSES_ROOT\{value of default key}\shell


In your case you would appear to have associated .avi files with VLC Media
Player, so you probably have a VLC entry there. Explore what values you have
under that key, and it will perhaps become apparent what's happening.

--
Jon



My System SpecsSystem Spec
Old 04-15-2008   #3 (permalink)
Bob


 
 

Re: Weird behavior of ShellExecute on Vista

I know nothing about developing an application. Having said that, I think
you need to take a look at Control Panel>Default Programs.

Also when you right click a video file there is no default action. The
reason for right clicking the file is to choose an action other than the
default.
The default action occurs when you left click.


"Mihai Ciumeică" <cmihai@xxxxxx> wrote in message
news:OvoR5W0nIHA.3804@xxxxxx
Quote:

> Greetings, everyone. I apologize in advance if the question is off-topic
> in here, but the only newsgroup here specifically about Windows Vista
> registry is in German. So, here goes.
>
> I'm developing an application that must at one point launch a user-given
> file. So I open the registry, look under HKCR\{name of file type}\shell,
> get the name of the default verb ('Play' for video files etc.), then look
> up the appropriate handler (the program executable) in the verb's subkey,
> check if I can launch the handler and then do so. Later I might, with the
> user's permission, change it to another program, or add my own verb, or
> whatever.
>
> The problem is, under Vista, these verbs don't work. They don't even show
> up in the context menu. For example, when I right-click a video file, the
> default action is 'Open', which launches my VLC media player. The default
> action in HKCR\avifile\shell is 'Play', and the handler under
> HKCR\avifile\shell\play\command is wmplayer.exe. I'm guessing the fact
> that the 'command' key has a value called 'LegacyDisable' has something to
> do with it.
>
> So my question is, where exactly in the registry does ShellExecute look
> for the default verb and its handler?
>
> Thank you for your time.
My System SpecsSystem Spec
Old 04-15-2008   #4 (permalink)
Mihai Ciumeică


 
 

Re: Weird behavior of ShellExecute on Vista

>> So my question is, where exactly in the registry does ShellExecute look
Quote:
Quote:

>> for the default verb and its handler?
>
> When you right-click a .avi file it first looks at the default key at
>
> HKEY_CLASSES_ROOT\.avi
>
> to determine where to subsequently jump to ie
>
> HKEY_CLASSES_ROOT\{value of default key}\shell
>
>
> In your case you would appear to have associated .avi files with VLC Media
> Player, so you probably have a VLC entry there. Explore what values you
> have under that key, and it will perhaps become apparent what's happening.
There's no mention of VLC in there. Where does the system look next, if it
finds LegacyDisable in the first location?
And here are the contents of the registry branch, edited for brevity:

[HKEY_CLASSES_ROOT\AVIFile\shell]
@="Play"

[HKEY_CLASSES_ROOT\AVIFile\shell\open]
"LegacyDisable"=""
[HKEY_CLASSES_ROOT\AVIFile\shell\open\command]
@="%ProgramFiles%\Windows Media Player\wmplayer.exe" /prefetch:8 /Open "%L"
[HKEY_CLASSES_ROOT\AVIFile\shell\open\DropTarget]
"CLSID"="{CE3FB1D1-02AE-4a5f-A6E9-D9F1B4073E6C}"

[HKEY_CLASSES_ROOT\AVIFile\shell\play]
@="&Play"
"MUIVerb"=@%SystemRoot%\system32\unregmp2.exe,-9991
"LegacyDisable"=""
[HKEY_CLASSES_ROOT\AVIFile\shell\play\command]
@="%ProgramFiles%\Windows Media Player\wmplayer.exe" /prefetch:8 /Play "%L"
[HKEY_CLASSES_ROOT\AVIFile\shell\play\DropTarget]
"CLSID"="{CE3FB1D1-02AE-4a5f-A6E9-D9F1B4073E6C}"

I might resort to just searching the registry for all mentions of .avi,
avifile and VLC, but, if nothing else, I'd like to help the next person
looking for the solution to this. :-)


My System SpecsSystem Spec
Old 04-15-2008   #5 (permalink)
Jon


 
 

Re: Weird behavior of ShellExecute on Vista

Right-click on

HKEY_CLASSES_ROOT\.avi

choose export and paste the exported .reg file in here.


--
Jon


"Mihai Ciumeică" <cmihai@xxxxxx> wrote in message
news:%23dBw%23r0nIHA.4616@xxxxxx
Quote:

> There's no mention of VLC in there. Where does the system look next, if it
> finds LegacyDisable in the first location?
> And here are the contents of the registry branch, edited for brevity:
>
> [HKEY_CLASSES_ROOT\AVIFile\shell]
> @="Play"
>
> [HKEY_CLASSES_ROOT\AVIFile\shell\open]
> "LegacyDisable"=""
> [HKEY_CLASSES_ROOT\AVIFile\shell\open\command]
> @="%ProgramFiles%\Windows Media Player\wmplayer.exe" /prefetch:8 /Open
> "%L"
> [HKEY_CLASSES_ROOT\AVIFile\shell\open\DropTarget]
> "CLSID"="{CE3FB1D1-02AE-4a5f-A6E9-D9F1B4073E6C}"
>
> [HKEY_CLASSES_ROOT\AVIFile\shell\play]
> @="&Play"
> "MUIVerb"=@%SystemRoot%\system32\unregmp2.exe,-9991
> "LegacyDisable"=""
> [HKEY_CLASSES_ROOT\AVIFile\shell\play\command]
> @="%ProgramFiles%\Windows Media Player\wmplayer.exe" /prefetch:8 /Play
> "%L"
> [HKEY_CLASSES_ROOT\AVIFile\shell\play\DropTarget]
> "CLSID"="{CE3FB1D1-02AE-4a5f-A6E9-D9F1B4073E6C}"
>
> I might resort to just searching the registry for all mentions of .avi,
> avifile and VLC, but, if nothing else, I'd like to help the next person
> looking for the solution to this. :-)
>
>
My System SpecsSystem Spec
Old 04-15-2008   #6 (permalink)
Mihai Ciumeică


 
 

Re: Weird behavior of ShellExecute on Vista

"Jon" <Email_Address@xxxxxx> wrote in message
news:#eiNCy0nIHA.1036@xxxxxx
Quote:

> Right-click on
>
> HKEY_CLASSES_ROOT\.avi
>
> choose export and paste the exported .reg file in here.
Never mind that; I just searched the registry and found an obscure key
called
HKEY_CURRENT_USER\Software\Microsof\Windows\CurrentVersion\Explorer\FileExts\.avi\UserChoice,
which pointed to VLC. Apparently, in Vista, changing a file association is
now a per-user setting. I'm sorry to have bothered you guys with what I
could've done myself, and thank you for replying.

My System SpecsSystem Spec
Old 04-15-2008   #7 (permalink)
Jon


 
 

Re: Weird behavior of ShellExecute on Vista

"Mihai Ciumeică" <cmihai@xxxxxx> wrote in message
news:uNM8r60nIHA.672@xxxxxx
Quote:

> Never mind that; I just searched the registry and found an obscure key
> called
> HKEY_CURRENT_USER\Software\Microsof\Windows\CurrentVersion\Explorer\FileExts\.avi\UserChoice,
> which pointed to VLC. Apparently, in Vista, changing a file association is
> now a per-user setting. I'm sorry to have bothered you guys with what I
> could've done myself, and thank you for replying.

Interesting. That's a new one on me too, I must confess. Glad you've found
the culprit anyhow.

--
Jon



My System SpecsSystem Spec
Old 04-16-2008   #8 (permalink)
Ramesh, MS-MVP


 
 

Re: Weird behavior of ShellExecute on Vista

Checkout the Per-user override here:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.avi

This applies to Windows XP as well as for Windows Vista.

--
Regards,

Ramesh Srinivasan, Microsoft MVP [Windows Shell/User]
Windows® Troubleshooting http://www.winhelponline.com
Winhelponline.com blog http://www.winhelponline.com/blog


"Mihai Ciumeică" <cmihai@xxxxxx> wrote in message news:OvoR5W0nIHA.3804@xxxxxx
Greetings, everyone. I apologize in advance if the question is off-topic in
here, but the only newsgroup here specifically about Windows Vista registry
is in German. So, here goes.

I'm developing an application that must at one point launch a user-given
file. So I open the registry, look under HKCR\{name of file type}\shell, get
the name of the default verb ('Play' for video files etc.), then look up the
appropriate handler (the program executable) in the verb's subkey, check if
I can launch the handler and then do so. Later I might, with the user's
permission, change it to another program, or add my own verb, or whatever.

The problem is, under Vista, these verbs don't work. They don't even show up
in the context menu. For example, when I right-click a video file, the
default action is 'Open', which launches my VLC media player. The default
action in HKCR\avifile\shell is 'Play', and the handler under
HKCR\avifile\shell\play\command is wmplayer.exe. I'm guessing the fact that
the 'command' key has a value called 'LegacyDisable' has something to do
with it.

So my question is, where exactly in the registry does ShellExecute look for
the default verb and its handler?

Thank you for your time.

My System SpecsSystem Spec
Reply

Thread Tools


Similar Threads
Thread Forum
Weird behavior of USB mouse Vista hardware & devices
Weird website behavior Network & Sharing
Weird Forwarding Behavior Live Mail
Weird get-command behavior PowerShell
Weird behavior when printing Vista mail


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46