Você pode, em teoria, fazer isso usando a chave de registro
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Se você criar uma chave "wmplayer.exe" como uma subchave, poderá criar um REG_SZ chamado "debugger" e especificar qualquer programa a ser executado sempre que o wmplayer for chamado (Detalhes aqui )
Se você usar o caminho para o vlc palyer como depurador, ele sempre será iniciado em vez do wmplayer.exe. Como não é um depurador, o wmplayer.exe não será iniciado, mas passado para o vlc.exe, que não o compreenderá e dará um erro. Para evitar isso, você poderia usar um script simples
Set wso = CreateObject("WScript.Shell")
wso.Run """C:\Program Files (x86)\VideoLAN\VLC\vlc.exe""", , False ' use your own path to the vlc executable
E como depurador especifique "wscript.exe <path to the script>"
Algumas coisas a considerar: isso só funcionará corretamente com uma chamada direta para o wmplayer.exe. Todos os arugments são excluídos pelo script. Isso inclui arquivos de mídia passados ao wmplayer. Você pode no script também lidar com argumentos e passá-los para a vlc. O principal problema com isto é que o próprio wmplayer pode ter várias linhas de comando além de um arquivo de mídia, então você teria que excluir todos os que são específicos do wmplayer e incluir todo o sentido para vlc que está além do escopo da sua questão. >
Observe também que essa é uma abordagem muito agressiva que eu nunca usaria se houvesse outra maneira de resolver seu problema. Na verdade, eu prefiro substituir o executável pelo meu próprio vlc portable exe ou algo assim, mas a pergunta é respondível, então deve ser respondida.