C# 在C中禁用Windows回收站删除确认#

C# 在C中禁用Windows回收站删除确认#,c#,windows,recycle-bin,shell32,C#,Windows,Recycle Bin,Shell32,我正在创建一个小程序,其中有一些功能,使我的电脑“感觉更好”。 其中一个功能是清空我的回收站 我正在为此使用以下代码: enum RecycleFlags : uint { SHERB_NOCONFIRMATION = 0x00000001, // No empty confirmation SHERB_NOPROGRESSUI = 0x00000002, // No progress tracking SHERB_NOSOUND = 0x00000004 // No s

我正在创建一个小程序,其中有一些功能,使我的电脑“感觉更好”。 其中一个功能是清空我的回收站

我正在为此使用以下代码:

enum RecycleFlags : uint
{
    SHERB_NOCONFIRMATION = 0x00000001, // No empty confirmation
    SHERB_NOPROGRESSUI = 0x00000002, // No progress tracking
    SHERB_NOSOUND = 0x00000004 // No sound on completion
}

[DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, RecycleFlags dwFlags);

private bool IsEmpty()
{
    Shell shell = new Shell();
    Folder recycleBin = shell.NameSpace(10);

    if (recycleBin.Items().Count == 0)
    {
        return true;
    }
    return false;
}

public bool Empty()
{
    if (IsEmpty() || SHEmptyRecycleBin(IntPtr.Zero, null, 0) == 0)
    {
        return true;
    }
    return false;
}
所以在另一个类中,我使用这些函数。我首先检查回收站是否有任何项目,然后再开始删除它们。如果是,则删除它们。如果没有,那就什么都不要做

但是,会发生以下情况: 如果我有几项要删除,比如说4项。在程序开始删除它们之前,会弹出一个Windows消息框,询问我是否确定要删除4项。这会在激活后应完全自动化的流程中导致一些用户交互

我做了一些研究,但似乎我只能在我自己的电脑上停用确认信息。在回收站属性中。 例如,我知道CCleaner也会清空回收站,而不会弹出确认窗口。所以这应该是可能的

如何在代码中“跳过”此确认步骤?我在清单中尝试了一些管理员权限,但不起作用

下面是messagebox的一个示例:

如果跳过messagebox不是一个选项,我想知道是否有一种方法可以自动回答这个问题?如果是,我希望程序回答“是”。
因为如果用户按“否”,SHEmptyRecycleBin函数仍将返回一个“success”值,而项目不会被删除。因此,在空函数之后,我必须再次进行“计数”检查。

我忘记在函数调用中传递正确的标志

我使用以下命令调用函数:

SHEmptyRecycleBin(IntPtr.Zero, null, 0)
虽然应该是这样的:

SHEmptyRecycleBin(IntPtr.Zero, null, RecycleFlags.SHERB_NOCONFIRMATION | RecycleFlags.SHERB_NOPROGRESSUI | RecycleFlags.SHERB_NOSOUND)

感谢Cid在评论中回答了我的问题。谢谢。

向我们展示您用来调用
SHEmptyRecycleBin()的代码。
这是一个简单的公共函数。它被添加到代码中。“public bool Empty()”。您已要求传递标志
SHERB_NOCONFIRMATION
there
SHEmptyRecycleBin(IntPtr.Zero,null,0)
我从未使用过此DLL,因此无法100%确定,因此使用注释而不是答案。但是,似乎很清楚itTry
SHEmptyRecycleBin(IntPtr.Zero、null、RecycleFlags.SHERB\u NOCONFIRMATION)