问题标签 [urlmon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
251 浏览

internet-explorer - 在协议处理程序中取消导航

我通过实现IInternetProtocol接口并在 HKEY_CLASSES_ROOT\PROTOCOLS\Handler 中注册 COM 对象来实现我的自定义协议处理程序。

我希望能够处理请求并保持浏览器窗口不变(即它必须保留在带有我的自定义协议链接的页面上)。

这种行为通常通过返回 HTTP 204 响应来实现。

我为此实现了IWinInetHttpInfo接口。它处理 HTTP_QUERY_REQUEST_METHOD、HTTP_QUERY_CONTENT_TYPE、HTTP_QUERY_VERSION、HTTP_QUERY_RAW_HEADERS_CRLF、HTTP_QUERY_STATUS_CODE 请求。

但这无济于事。Internet Explorer 仍然使用我的自定义协议的 URL 将原始页面切换为空白页面。

请问有什么帮助吗?

代码:

0 投票
0 回答
98 浏览

c - urldownloadtofile 仅预取

我正在制作一个将文件下载到 Windows 的程序。为此,我使用了 urlmon 和 urldownload 到文件功能。每当我在 Windows 中下载具有相关功能的文件时,我只会得到一个预取文件,但我在硬盘驱动器上找不到该文件。请告诉我我做错了什么?

注意:我使用 32 位 windows xp 来测试这个程序。

0 投票
1 回答
959 浏览

python - pythoncom.CoCreateInstance 无法创建 IZoneIdentifier;尽管在 MSDN 中有记录,但该接口也从注册表中丢失

我正在尝试实现操作区域标识符以指定文件的下载位置——旧的新事物——Python 中的 MSDN 博客。

CoCreateInstance

我收到一个错误:

(没有堆栈跟踪,因为这是一个扩展功能)

如果我用or替换IZoneIdentifierIID ,它可以工作,但是具有正确 IID 的 a 会失败并出现相同的错误。pythoncom.IID_IUnknownpythoncom.IID_IPersistFileQueryInterface

事实上,在 中HKCR\Interface,我什么都没有IZoneIdentifier看到,但确实看到了IPersistFile


disassembledurlmon.dll后,我看到它确实实现了接口,但没有在它的DllRegisterServer. 进一步搜索,我看到它IPersistFile正在被注册ole32.dll- 但不是IZoneIdentifier.

MSDN记录了这个接口从 IE6 开始可用。但它在 IE7 或 IE8 中都不存在。由于这是 XP(并且据称包含所有更新),因此我没有其他可尝试的方法。

同样,该接口存在于urlmon.hMSDN 文章中提到的文件中的 Windows SDK 7.0 中。

问题是:

  • 这个界面是否默默地放弃了,而没有 MSDN 反映这一点或其他什么?或者,这是一个已知问题吗?以后版本的 IE 可以用吗?
  • 哪些组件具有哪些功能ole32.dllurlmon.dll相关(因此我可以尝试(卸载)为它们安装更新)?
0 投票
0 回答
1933 浏览

c++ - URLDownloadToFile 问题

好的,所以我一直在尝试做一些简单的事情,比如在 Visual C++ 中下载和传输文件,我一直在使用这个URLDownloadToFile()函数。代码编译,它没有给出任何错误,但它不会下载任何东西。显然,我并没有在我的代码不起作用的那一刻就跑过来,所以我做了一些调试等,我稍后会提到。这是代码。

请记住,我不是专业人士,而且我在 C++ 方面的经验并不丰富。我读了几本书,但我比较年轻,我现在这样做是为了好玩。

至于调试,在调用urlfile会抛出错误,URlDownloadToFunction直到我完成.c_str()并转换它们。我在函数调用处设置了一个断点,并注意到变量 hr 的值是 0xcccccccc,直到下一个断点,在printf语句处,hr然后才具有值,E_ABORT Operation Aborted而没有其他值。字符串似乎没有问题,但它没有告诉我其他任何事情。老实说,我很难过。非常感谢任何和所有帮助。

编辑

我觉得自己像个白痴,但我试图写入我的 C:\ 驱动器的根目录,即使我忘记启用 UAC。当我启用它时,它下载并运行 Putty 就好了,尽管我正在考虑从 URLDownloadToFile() 更改为使用 WinInet。感谢所有的帮助!

0 投票
1 回答
754 浏览

asp.net-mvc - 在 MIME 类型检查期间,应用程序池因 URLMoniker urlmon.dll 崩溃

我的应用程序是部署在 Windows Server 2012 R2 上的 ASP.NET MVC 网站。我正在使用内置的 Windows 库 URLMoniker - urlmon.dll 来获取文件的 MIME 类型。我将其文件路径传递给 GetMimeType 方法。我面临的问题是,当我使用 Visual Studio 调试它时,它返回该文件的 mime 类型(在我的测试用例中,对于 txt 文件,它返回“application/octet-stream”)。但是在生产服务器上部署后,应用程序池意外崩溃并且日志文件中没有日志,我花了 3 天时间才了解这个代码块(在附加日志条目的帮助下)。

甚至事件查看器也没有显示应用程序池崩溃的任何原因,除了以下情况:为应用程序池“SampleApp”提供服务的进程与 Windows 进程激活服务发生了致命的通信错误。进程 ID 为“yyyy”。

在尽我所能进行详细研究之后,我有以下文章可能会提供一些解决方案,但我仍然找不到这个问题的确切原因。

  1. https://www.experts-exchange.com/questions/24821266/Marshal-FreeCoTaskMem-crashing-application-in-x64-but-not-x86.html

  2. 这里的这个也面临类似的问题:https ://superuser.com/questions/568806/iis-worker-process-crashing-without-stack-trace-what-else-can-i-try

  3. 它说 urlmon.dll 可能未在系统上注册,但我已检查 Windows 注册表并已注册。事实上,该库是最新的,我需要在生产服务器上应用任何注册表更改之前找到根本原因。用新版本替换dll,修复注册表问题是我最后的手段。https://answers.microsoft.com/en-us/ie/forum/ie8-windows_7/urlmondll-causing-many-programs-to-crash/cda9a6cb-cf51-499c-8855-45c97110eafe

  4. https://social.technet.microsoft.com/Forums/windows/en-US/c3f1517b-a8c5-422e-9317-2f539715badc/ie11-x64-on-win7-crash-ntdll-urlmondll?forum=w7itprohardware

0 投票
1 回答
721 浏览

c++ - Download to current directory

I want to download the file to current directory instead of "c://". How would that be done?

My code:

0 投票
1 回答
511 浏览

vba - 使用 urlmon API 函数从 Quandl.com 下载数据以访问数据库,使用 VBA

概述
我正在使用 www.quandl.com 的免费财务数据来尝试预测资产价格走势

方法
我已经构建了一个函数来使用 quandl API 下载数据。我声明了一个位于 urlmon.dll 系统 32 文件夹中的 Windows API 函数。

代码

问题
此代码有效,它将数据下载到正确的文件目的地,我想知道是否有办法代替直接下载到文件位置;直接运行到 Access DB 表?我知道该函数明确声明它直接下载到文件,但是如果有一种方法可以直接访问 Access DB,那就太好了。另外我对这些api函数几乎一无所知,所以请放轻松

0 投票
1 回答
867 浏览

c++ - URLDownloadToFile 失败并显示 0x800c0008 (INET_E_DOWNLOAD_FAILURE),具体取决于 URL 的长度

我知道这里有一个类似的问题。但是我的症状不同。似乎有某种我找不到记录的 URL 长度限制。URL 中的限制为 2084(原文如此!不是 2048!)个字符。最简单的复制只是一个带有以下代码的控制台应用程序:

当然,URL 没有实际意义,在我的实际示例中,这些是重要的参数。只要我将 URL 缩短到 2084 个字符以下,我就会返回 S_OK,一切都很好。

我使用 Fiddler 检查请求,该请求告诉我我看到下载的 http 状态代码 200(OK),甚至服务器响应也很完美:

服务器响应

有没有办法使用 URLDownloadToFile 下载超过 2084 个字符的 URL?

0 投票
1 回答
27 浏览

excel - Webquery 正在持久化/缓存 http auth 失败,尽管 URL 发生了变化

我在这里确实有一个奇怪的问题,正在寻找有优雅解决方案的人。我使用类似的东西

从 php Web 应用程序中获取数据。我在 URL 中有访问键作为查询参数。如果他们是正确的,一切都会好的。如果错误,php 会返回一个 http 403 页面。这使得 Excel 引发错误 1004,我发现它很好。现在,对代码的任何后续调用,以及更改(现在正确)的访问密钥仍然会引发 1004。根据服务器日志,Excel 甚至不再启动 http 请求。看起来它正在缓存 http 响应代码。

由于用户必须输入密钥,因此很容易发生错误。我想提供输入正确的,但比上面会让它们看起来仍然是错误的......

欢迎提出想法!如果有影响,请运行 Excel 2016。

0 投票
1 回答
206 浏览

c++ - 尝试使用 urlmon.dll 下载文件时如何修复“运行时检查失败 #0”错误?

我使用urlmon.dll用 C++ 编写了一个下载程序。

我使用 Visual Studio 2015 RTM 作为 IDE。

这是我的代码:

但问题是当我尝试下载某些程序时显示此错误:

对话框截图

我应该怎么做才能解决这个问题?