问题标签 [shell32]

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 投票
2 回答
523 浏览

c++ - 虚拟文件从 Internet 临时文件打开

我创建了一个以 Desktop 为根的命名空间扩展。扩展的主要目的是提供一个虚拟的 ZIP 文件列表,代表一个可配置目录的列表。当用户单击其中一项时,相关目录的内容将被压缩到位,并且生成的 ZIP 文件存储在缓存文件夹中。

除了一个小问题,所有这些都很好。如果我们转到 Windows 资源管理器,打开扩展并双击一个项目,打开的文件是缓存中的那个。[正确的]

另一方面,如果我们通过打开对话框打开它,则打开的文件是来自 Internet 临时文件目录的文件。[不正确]

为了从缓存文件夹而不是从 Internet 临时文件中打开文件,我必须为打开对话框(例如通过 notepad.exe 使用时)更改什么。我试图在 IShellFolder::GetDisplayNameOf 中始终发送合格的文件名,但没有任何运气。

0 投票
1 回答
7408 浏览

winapi - 获取 Windows 上任何用户的 CSIDL_LOCAL_APPDATA 路径

是否有任何 Win32/MFC API 来获取我想要CSIDL_LOCAL_APPDATA任何用户(不仅是当前登录的用户)?假设我有一个“域\用户”形式的用户列表,我想获得他们的路径列表 - 这可能吗?

0 投票
4 回答
2620 浏览

windows - 在 Windows 服务中使用 SHFileOperation

这是可能的,但在 Windows 服务中使用 SHFileOperation 是否合适?shell32.dll 中的所有这些 SHxxx API 函数似乎都是在考虑用户级程序的情况下编写的。我可以确定 SHFileOperation 永远不会显示 GUI 吗?

0 投票
2 回答
1009 浏览

windows - 从托管代码中的 shell 获取 Vista/Windows Search/propsys.dll 属性

有没有人设法做到这一点?我尝试为 IPropertyStore 创建一个托管包装类,但在获取指向 PROPVARIANT 的指针的方法(即 IPropertyStore::GetValue)上获得了 AccessViolationExceptions(在我的托管版本中呈现为 MarshalAs(UnmanagedType.Struct) 输出参数)可能是我的理解COM 和互操作是不够的 --- 我不确定问题是否出在我的 PROPVARIANT 结构声明中(目前只使用 StructLayout.Sequential,声明一个字节序列,并手动操作字节以获取各种类型的值工会等),COM 问题是什么进程拥有什么,或其他什么。我已经尝试过各种其他版本的 PROPVARIANT,例如对联合使用 StructLayout.Explicit,但没有任何效果。使用 IPropertyStore 检索 PROPERTYKEY::

0 投票
1 回答
5803 浏览

c# - 从 Shell32.dll 加载图标:Win32 句柄无效或类型错误

我从 Shell32.dll 得到一些图标。虽然有些图标似乎不可用,但我不明白为什么。

我通过调用加载库来获取图标:

然后通过调用获取图标:

我发送了我正在获取的图标的图标索引,这对于打开文件夹图标(索引 5)和登录图标(索引 45)等 icpon 工作正常,但是当我尝试获取索引处的图标时(71、73、 127 等)我收到以下异常:传递给 Icon 的 Win32 句柄无效或类型错误

我想知道是否有人知道为什么会这样?以及为什么某些图标可以访问而其他图标无法访问。

谢谢

0 投票
2 回答
1479 浏览

c# - 用于 shell32.dll 的 SHMultiFileProperties 的 P/Invoke

我对 P/Invoke 不太擅长。谁能告诉我如何在 .NET 中声明和使用以下 shell32.dll 函数?

来自http://msdn.microsoft.com/en-us/library/bb762230%28VS.85%29.aspx

它用于显示多个文件系统对象的 Windows Shell 属性对话框。

我已经想出了如何将 SHObjectProperties 用于一个文件或文件夹:

任何人都可以帮忙吗?

0 投票
4 回答
3836 浏览

c++ - '安全' DLL 注入

不是一个非常好的问题,对不起。

我有一个程序需要在从资源管理器打开文件时发出警报(即调用 ShellExecute(A/W))。

不幸的是,微软删除了允许您在 Vista 及更高版本中挂钩这些事件的 COM 接口 (IShellExecuteHook),据说是因为旧代码可能会因更改而导致崩溃。有一种解决方法可以重新启用此功能,但它不再有效。

我做了一些研究,看起来捕获对 ShellExecute 的调用的唯一方法是将调用重新路由到 shell32.dll。目前,我正在考虑将自己的 DLL 注入资源管理器进程,然后将 ShellExecute 的 IAT 条目复制到我的 DLL 中的某个地址分配中,最后修改 ShellExecute 的 IAT 条目以指向我的函数,这将通知打开文件的程序并跳转到我们之前存储的原始 ShellExecute 函数。

我最关心的是防病毒软件。他们会在乎我注射到 explorer 中吗?他们会关心我正在修改 IAT 吗?

另一个问题是这是否安全;浏览器的安全权限是否有可能(或相当可能)不允许通过 CreateRemoteThread 进行注入?如果是这样,有没有更好的方法来进行这种注射?

一般来说,有没有更好的方法来做到这一点?

编辑:对于将来遇到此问题的任何人,explorer.exe 没有 shell32.dll 的 IAT;它有一个标头,但是 thunk 中充满了垃圾值,因此(据我所知)无法检索任何导入函数的条目。
看起来代码隧道是挂钩的唯一方法。

0 投票
3 回答
2520 浏览

.net - 需要 .NET 中 Shell32 的 ExtractAssociatedIcon 函数的工作示例

我需要 Shell32.dll 中 ExtractAssociatedIcon 函数的工作示例。我无法让它工作,而且我没有想法。我需要另一组关注以下代码。当表单加载时,它的图标应该设置为 Visual Studio 图标,但我得到的只是默认的系统图标。

已更正

<MarshalAs(UnmanagedType.LPStr)>是问题所在。应该是LPTStr,不是LPStr

0 投票
1 回答
121 浏览

c++ - 设备浏览问题

我正在编写文件浏览软件,我希望它能够在所有便携式设备上正常工作,例如相机、智能手机等。我的程序显示缩略图,所以我需要阅读每个文件的内容。

现在我面临一些问题:

  1. 使用我的两个相机,我只能从设备打开一个 ISteam。对于每个额外的流,我都会收到 ERROR_BUSY 错误。这很不方便,因为我在几个后台线程中获得了缩略图。

  2. 我可以从我的智能手机打开多个流,但我无法寻找那些流!作为解决方法,我必须将整个流复制到临时文件系统位置并在那里处理它。

我想知道这取决于什么。设备文件系统?驱动实现?还是别的什么?

0 投票
3 回答
3560 浏览

c# - C# Visual Studio 2008 参考 system32.dll ...怎么样?

我需要参考 system32/shell32.dll,因为我使用一些 shell 函数来读取回收站。我尝试了“添加引用--> COM--> Microsoft Shell 控件和自动化”和“添加引用--> 浏览--> [直接转到 system32/shell32.dll]。两者都将 shell32 引用添加到我的引用中. 但是当我查看属性时,我看到引用的路径如下所示:“C:\Users\Tim\Documents\Visual Studio 2008\Projects\Wing\FileWing\obj\Debug\Interop.Shell32.dll” ...

我不会将此 \obj\Debug\ 路径部署到我的安装程序。那么如何直接引用最终用户的 shell32.dll 呢?有办法吗?为什么VS2008会创建这个奇怪的路径?我可以更改此路径,使其不位于这个奇怪的子文件夹中吗?


嗯。好的,在重新访问 PInvoke 之后,我确定我不太明白:-/

让我说明我需要处理的代码。我正在翻找回收箱,寻找我想要回收的物品。有没有办法不通过 PInvoke 来完成这项工作?