![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| 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. |
| |||||||
![]() |
| |
| | #1 (permalink) |
| | 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 Specs![]() |
| | #2 (permalink) |
| | 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 Specs![]() |
| | #3 (permalink) |
| | 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 Specs![]() |
| | #4 (permalink) |
| | 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. 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 Specs![]() |
| | #5 (permalink) |
| | 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 Specs![]() |
| | #6 (permalink) |
| | 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. 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 Specs![]() |
| | #7 (permalink) |
| | 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 Specs![]() |
| | #8 (permalink) |
| | 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 Specs![]() |
![]() |
| 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 | |||