C++ 打开转义文件时出现意外行为:///IE中的URL

C++ 打开转义文件时出现意外行为:///IE中的URL,c++,windows,internet-explorer,winapi,url,C++,Windows,Internet Explorer,Winapi,Url,我可以向上帝发誓,下面的代码一周前就可以用了。我可以说,因为我开发的软件依赖于它 此代码块用于使用IE从本地HDD打开html页面: (在我的实际示例中,这些字符串不是硬编码的。它的作用是——它转义到本地html文件的路径,并在前面添加文件://。) 但我今天测试它时得到的只是IE中的主页 你知道这里怎么了吗 另外,Report\u View.htm文件存在于文件系统中。 PS2。如果我将转义的URL复制并粘贴到Chrome或FF中,它会很好地打开。此外,我不确定参数本身是否应该引用(它没有空格

我可以向上帝发誓,下面的代码一周前就可以用了。我可以说,因为我开发的软件依赖于它

此代码块用于使用IE从本地HDD打开html页面:

(在我的实际示例中,这些字符串不是硬编码的。它的作用是——它转义到本地html文件的路径,并在前面添加文件://。)

但我今天测试它时得到的只是IE中的主页

你知道这里怎么了吗

另外,
Report\u View.htm
文件存在于文件系统中。
PS2。如果我将转义的URL复制并粘贴到Chrome或FF中,它会很好地打开。

此外,我不确定参数本身是否应该引用(它没有空格字符),也不确定转义是否正确

尝试:


显然,他们对IE做了一些修改,现在文件协议URL不能再包含任意转义。根据我的经验,使用IE的唯一方法是通过调用API获取文件协议路径:


“下面的代码一周前就可以使用了”,然后与您以前的版本(您使用的是版本控制软件,对吗?)进行了
diff
。@syam:没有
diff
——它根本没有更改。它应该是3个斜杠:引号不应该有什么区别。我的错。你确定要逃跑吗?(编辑了我的答案)嗯,我唯一没有做的就是用|替换:但它仍然没有任何区别。正如逃跑所说,它不应该有任何区别,但它确实有。如果我移除转义,它就会工作。有了它,它就没有了。同样,同样的代码在一周前起作用。是不是MS更新把事情搞砸了?
LPCTSTR m_strBrowser = L"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe";
LPCTSTR addr2 = L"\"file:///C%3a%5cUsers%5cUserName%5cAppData%5cLocal%5cTemp%5cReport_View.htm\"";

ShellExecute(hMain, NULL, m_strBrowser, addr2, NULL, SW_SHOWNORMAL);
LPCTSTR addr2 = L"file:///C|/Users/UserName/AppData/Local/Temp/Report_View.htm";
//You get this path from Registry
LPCTSTR m_strBrowser = L"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe";

LPCTSTR addr2 = L"C:\\Users\\UserName\\AppData\\Local\\Temp\\Report_View.htm";

DWORD dwSz_buff_addr2 = INTERNET_MAX_URL_LENGTH;
TCHAR buff_addr2[INTERNET_MAX_URL_LENGTH];
if(SUCCEEDED(UrlCreateFromPath(addr2, buff_addr2, &dwSz_buff_addr2, NULL))
{
    ShellExecute(hMain, NULL, m_strBrowser, buff_addr2, NULL, SW_SHOWNORMAL);
}