我需要运行myApp.exe,然后启动iexplore.exe。 什么是最强大,通用的方式(OS位版本不可知)?
你能指点我正确的注册表项/ env var /其他意思吗?
谢谢, 盖
答案 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
中。
修改强>
答案 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")