当前位置: 首页 > 知识库问答 >
问题:

SHQueryRecycleBin 在 .net Core 上不起作用

督灿
2023-03-14

我有以下方法:1使用“SHQueryRecycleBin”查询回收站

但是,当我试图在. Net Core 3.1“SHQueryRecyclbin”上使用相同的代码时,简单地拒绝工作

检查一下,我在{. Net 4.8}vs{. Net Core 3.1}控制台、Winform上试过了

代码示例:

[DllImport("shell32.dll")]
static extern int SHQueryRecycleBin(string pszRootPath, ref 
SHQUERYRBINFO  pSHQueryRBInfo);

[StructLayout(LayoutKind.Sequential, Pack=1)] // also tried pack=4 
public struct SHQUERYRBINFO
{
    public int  cbSize;
    public ulong i64Size;
    public ulong i64NumItems;
}

public static int GetCount()
{
    SHQUERYRBINFO sqrbi = new SHQUERYRBINFO();
    sqrbi.cbSize = Marshal.SizeOf(typeof(SHQUERYRBINFO));
    int hresult = SHQueryRecycleBin(string.Empty, ref sqrbi);
    return (int)sqrbi.i64NumItems;
}

共有1个答案

张银龙
2023-03-14

在我尝试您的代码之前,我对问题可能是什么有了初步的了解。

如果按原样运行代码,则会从 SHQueryRecycleBin 收到 -2147024809HRESULT

这实际上是0x80070057HRESULT,这是错误

对于您的代码,罪魁祸首是StructLayoutSHQUERYRBINFO的声明。您已经定义Pack对齐大小为1(并尝试了4),但在结构中使用了ulongs。Win32<code>ulong</code>为8字节,因此您应该使用<code>8</code>作为.Net Core中的<code>Pack</code>大小:

...

[StructLayout(LayoutKind.Sequential, Pack = 8)]
public struct SHQUERYRBINFO
{
    ...

顺便说一句,如果完全省略Pack参数,将使用默认值8。

 类似资料:
  • 我有一种字体在IE8和IE9以及所有其他浏览器中都能正常工作,但第二种字体只在IE9和其他浏览器中工作。在IE8中,我得到了一个错误: “CSS3111:@font-face遇到未知错误。” 我一直在四处看书,尝试了很多事情,但都没有运气。 我的代码是: 我试过用几个不同的生成器多次重新生成eot,玩过CSS,玩过头,玩过域,等等,但是看起来它们都很好。如前所述,相同的代码在相同的,只是指向不同的

  • 我实现了spring Security3.2.5,但不幸的是@preauthorize不能用于类和方法。正如我从文档中读到的,@preauthorize应该允许方法和类工作,如果用户在注释中有指定的角色,但我能够运行所有方法或类,而没有任何角色差异。您可以看到security-config.xml和security.context.xml以及我在下面声明@preauthorize注释的类。如果你能

  • 问题内容: 我正在尝试使形状的动画随着样本大小的增加(从100增加到1000)而呈指数分布。还有一个滑块,用于配置发行版的lambda参数,以及一个用于启动动画的按钮。 我的问题是,即使布局得到渲染,当我按下开始按钮时也没有动画发生。到目前为止,这是我的尝试: 为了简化起见,我在Python笔记本中运行它: 问题答案: 您应该注意函数的名称空间。 考虑 因此,您需要处理实际对象,而不是它们的某些本

  • 我的代码没有验证select。怎么了?。这个问题的解决方案是什么?很抱歉我的英语不好,非常感谢你的回答 这是我的表格 我的Javacript 忽略它:Lorem ipsum dolor sit amet,奉献精英。毛里斯·塞德·里索斯和莫利斯·迪克特。在faucibus中,Interdum和malesuada在第一次同侧前就出名了。我是一个爱的人。我是帕特·泰勒斯,我是康格·奈克。南阿罗特鲁姆尼斯

  • 问题内容: 我正在做一个API,它在Heroku上。但是我只在heroku方面遇到了socket.io的一些问题,当我在本地对其进行测试时一切正常。该API完全独立于前端,因此它们位于不同的域(和不同的主机)中。问题是在生产中,我无法成功连接插座… 我有一些问题,所有这些都是关于heroku上的socket.io配置的。我知道有些帖子包含有关此信息的信息,但是我发现这些帖子使用的是旧版本的sock

  • 我是的新手,我必须制作一个音乐播放器。我从github中举了一个例子,我正在实现我需要的东西,但是当我将代码从更新到时,它会给我一个关于的错误: Android.app.remoteserviceException:StartForeground的错误通知:java.lang.runtimeException:服务通知的无效通道:通知(通道=null pri=0 contentview=null振