Looking into possibility of making an USB distributed application
that will autostart on insertion of an USB stick and shutdown when removing the stick

Will use .Net and C#.
Looking for suggestion how to approach this using C#?


Update: Two possible solutions implementing this as a service.
- override WndProc
or
- using WMI query with ManagementEventWatcher

推荐答案

你可以使用WMI,它很简单,而且比WndProc解决方案和服务的效果要好得多.

下面是一个简单的例子:

using System.Management;

ManagementEventWatcher watcher = new ManagementEventWatcher();
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Query = query;
watcher.Start();
watcher.WaitForNextEvent();

.net相关问答推荐

.NET restore/build在使用组织包的Github Action工作流中调用时获得401

使用React路由加载器获取数据不能正常工作

是否存在指定的(子)索引分隔符?

.net Maui 在单击按钮时访问 CollectionView 中的数据项

如何规范机器之间连字符的排序顺序?

双精度的 C++ 和 C# 十六进制值之间的差异

如何将 Assembly.CodeBase 转换为 C# 中的文件系统路径?

如何在 C# 中自动删除临时文件?

xunit Assert.ThrowsAsync() 不能正常工作?

app.config 文件和 XYZ.settings 文件有什么区别?

使用多个 MemoryCache 实例

struct 中需要覆盖什么以确保平等正常运行?

是否可以更改 Winforms 组合框以禁用输入?

如何结合 ||条件语句中的运算符

无法使用 Unity 将依赖项注入 ASP.NET Web API 控制器

在 C#/.NET 中组合路径和文件名的最佳方法是什么?

List 是否保证项目将按照添加的顺序返回?

如何在 nuspec 中指定特定的依赖版本?

如何在 C# 中使用迭代器反向读取文本文件

不签署 .NET 程序集有什么问题吗?