我怎么能以编程方式找到iexplore.exe的位置?

时间:2011-04-28 16:13:29

标签: c++ internet-explorer process

我需要运行myApp.exe,然后启动iexplore.exe。 什么是最强大,通用的方式(OS位版本不可知)?

你能指点我正确的注册表项/ env var /其他意思吗?

谢谢, 盖

7 个答案:

答案 0 :(得分:3)

对于较新版本的Internet Explorer,您可以检查密钥HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Capabilities \ ApplicationDescription。

话虽如此,最向后兼容的方式是查看以下路径(按此顺序):

在注册表中:HKEY_CLASSES_ROOT \ IE.AssocFile.HTM \ shell \ open \ command %ProgramFiles(x86)%\ Internet Explorer \ iexplore.exe %ProgramFiles%\ Internet Explorer \ iexplore.exe

请注意,64位Windows版本可能有两个不同版本的IE:32位和64位。至少就像现在的情况一样(使用IE9),您通常希望使用32位版本,因为它更好地进行了优化,并且具有更好的插件/ ActiveX兼容性。

答案 1 :(得分:3)

#include <stdlib.h>  
int main() {     
    system("iexplore.exe");
    return 0; 
} 

在我尝试过的任何版本的Windows中...如果单击“运行”,则键入iexplore.exe,将运行Internet Explorer。这应该做同样的事情......

答案 2 :(得分:1)

读取注册表项HKEY_CLASSES_ROOT\CLSID\{0002DF01-0000-0000-C000-000000000046}\LocalServer32

的标准值

这是IE COM服务器注册。

答案 3 :(得分:1)

正确的方法是使用%PATH%,因为这不受预载攻击。

SetSearchPathMode(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE);
WCAHR buf[MAX_PATH];
SearchPath(NULL, "iexplore.exe", NULL, MAX_PATH, buf, NULL);

答案 4 :(得分:0)

您可以查看PATH环境变量的文件夹。同样在文件夹%SYSTEMDRIVE%\PROGRA~1\INTERN~1%SYSTEMDRIVE%\PROGRA~2\INTERN~1中。

修改

  • 您可以拥有自己的env变量(例如IE_HOME)。并要求程序的客户端将其设置为等于IE可执行文件的路径,并使用此环境变量的值。

答案 5 :(得分:0)

除非我弄错了当前版本的IE总是安装在“Program Files \ InternetExplorer”下

所以,

string strIEPath;

char cDirectory[MAX_PATH];
if(SHGetSpecialFolderPathA(NULL,cDirectory,CSIDL_PROGRAM_FILES,false))          
{
    strIEPath = cDirectory;
    strIEPath.append("\\InternetExplorer\\iexplorer.exe");
}

答案 6 :(得分:0)

另一种选择:

CSettingsStore store(TRUE, TRUE);
if (store.Open(_T("Software\\Clients\\StartMenuInternet\\IEXPLORE.EXE\\shell\\open\\command")))
{
    CString strIEPath = _T("");

    store.Read(_T(""), strIEPath);
    store.Close();

    if(PathFileExists(strIEPath))
    {
        // Do whatever
    }
}

您也可以将密钥更改为:

store.Open(_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\IEXPLORE.EXE")