用默认的浏览器打开指定的网页是一个很常见的功能。ShellExecute是实现这个功能最方便的函数。Windows在注册表的这些位置保存着默认浏览器的信息。
HKEY_CLASSES_ROOT\.htm
HKEY_CLASSES_ROOT\.html
HKEY_CLASSES_ROOT\http\shell\open\command
HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application
HKEY_CLASSES_ROOT\ftp\shell\open\command
HKEY_CLASSES_ROOT\ftp\shell\open\ddeexec\Application
HKEY_CLASSES_ROOT\gopher\shell\open\command
HKEY_CLASSES_ROOT\gopher\shell\open\ddeexec\Application
IE也好,Firefox也好,在设置为默认浏览器后,都会在这些键下面写上相应的值。这样当调用ShellExecute时,Windows就知道应该用哪个浏览器来打开网页了。为了让ShellExecute的行为更加可预测,在url前面把协议写完整,比如这里的http。
创建一个进程,用的最多的函数莫过于CreateProcess,可是如果CreateProcess触发了UAC的话,创建肯定会失败。使用ShellExecute来创建进程,系统会提示用户要不要运行。