Empty Recycle Bin using C#

Introduction

In this blog post, we will show you how to empty recycle bin using C#.

Using Windows API

We can use Windows API to empty recycle bin. In this example, it will suppress confirmation dialogs (SHERB_NOCONFIRMATION), progress UI (SHERB_NOPROGRESSUI), and sounds (SHERB_NOSOUND) during the operation.


using System.Runtime.InteropServices;

namespace ConsoleApp1
{
    internal class Program
    {
        private const int SHERB_NOCONFIRMATION = 0x00000001;
        private const int SHERB_NOPROGRESSUI = 0x00000002;
        private const int SHERB_NOSOUND = 0x00000004;

        [DllImport("shell32.dll", CharSet = CharSet.Unicode)]
        private static extern int SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, int dwFlags);

        static void Main(string[] args)
        {
            try
            {
                int result = SHEmptyRecycleBin(IntPtr.Zero, null, SHERB_NOCONFIRMATION | SHERB_NOPROGRESSUI | SHERB_NOSOUND);

                if (result == 0)
                {
                    Console.WriteLine("Recycle bin emptied successfully.");
                }
                else
                {
                    Console.WriteLine("Failed to empty recycle bin.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Failed to empty recycle bin: {ex.Message}");
            }
        }
    }
}

SHEmptyRecycleBin function is declared using Platform Invocation Services (P/Invoke). P/Invoke allows C# code to call functions in unmanaged Windows libraries.

Conclusion

To empty recycle bin using C#, we can use Windows API. It provides a set of functions and interfaces that allow us to interact with Windows shell such as managing recycle bin. The primary function used in Windows API solution is SHEmptyRecycleBin.

comments powered by Disqus