检测可移动介质的弹出/插入

2023-11-27

我正在开发一个项目,需要能够检测何时插入或移除 CD 或 USB 驱动器。我发现一些源代码本应执行此操作,但是,当我插入或弹出 CD 时,似乎没有任何反应。

有人可以验证来源是否正确,并指出我在这里可能做错了什么吗?

public class MyWindow
{
    ManagementEventWatcher w;

    private void MyWindow_Loaded(object sender, RoutedEventArgs e)
    {
        WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), @"TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 2");
        ConnectionOptions opt = new ConnectionOptions();
        opt.EnablePrivileges = true;

        ManagementScope ms = new ManagementScope("root\\CIMV2", opt);

        w = new ManagementEventWatcher(ms, query);

        w.EventArrived += new EventArrivedEventHandler(w_EventArrived);
        w.Start();
    }

    private void w_EventArrived(object sender, EventArrivedEventArgs e)
    {
        PropertyData pd = e.NewEvent.Properties["TargetInstance"];
    }
}

当我在“PropertyData pd = ...”行上设置断点时,当我弹出/插入 CD 时,它永远不会被击中。因为我根本没有搞乱这一点,而且我在网上看到的所有示例都只是引用了相同的源代码(有细微的变化)


using System.Management;

public void networkDevice()
{
    try
    {
        WqlEventQuery q = new WqlEventQuery();
        q.EventClassName = "__InstanceModificationEvent";
        q.WithinInterval = new TimeSpan(0, 0, 1);
        q.Condition = @"TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 5";

        ConnectionOptions opt = new ConnectionOptions();
        opt.EnablePrivileges = true;
        opt.Authority = null;
        opt.Authentication = AuthenticationLevel.Default;
        //opt.Username = "Administrator";
        //opt.Password = "";
        ManagementScope scope = new ManagementScope("\\root\\CIMV2", opt);

        ManagementEventWatcher watcher = new ManagementEventWatcher(scope, q);
        watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
        watcher.Start();
    }
    catch (ManagementException e)
    {
        Console.WriteLine(e.Message);
    }
}

void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
    ManagementBaseObject wmiDevice = (ManagementBaseObject)e.NewEvent["TargetInstance"];
    string driveName = (string)wmiDevice["DeviceID"];
    Console.WriteLine(driveName);
    Console.WriteLine(wmiDevice.Properties["VolumeName"].Value);
    Console.WriteLine((string)wmiDevice["Name"]);
    if (wmiDevice.Properties["VolumeName"].Value != null)
        Console.WriteLine("CD has been inserted");
    else
        Console.WriteLine("CD has been ejected");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测可移动介质的弹出/插入 的相关文章

  • 运行应用程序时.NET 3.5 JIT 不工作

    以下代码在 Visual Studio 内部运行该版本和在 Visual Studio 外部运行该版本时提供不同的输出 我正在使用 Visual Studio 2008 并面向 NET 3 5 我也尝试过 NET 3 5 SP1 在 Vis
  • 如何向WebRequest添加参数?

    我需要从 Web 服务调用一个方法 所以我编写了以下代码 private string urlPath http xxx xxx xxx manager string request urlPath index php org get or
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • JetBrains Rider 针对 4.5 框架,无法切换到 4.7

    基本上 当尝试添加不支持旧框架的 NuGet 包时 会出现错误 但是在项目配置中只有 4 5 可用 在项目创建过程中 不存在选择目标的选项 有什么方法可以正确配置它吗 I haven t found out how to set up NE
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • 打开位置设置页面或提示用户启用位置

    我一直在绞尽脑汁 徒劳地谷歌搜索 我正在尝试找到一种方法来提示用户通过直接进入设置页面或仅点击屏幕上的 是 来切换位置 我见过的所有代码似乎都不起作用 有人有有效的方法吗 一个详细的例子将不胜感激 谢谢 我对 Xamarin 开发非常陌生
  • 根据 Active Directory 策略检查密码[重复]

    这个问题在这里已经有答案了 我有一个允许用户更改其 AD 密码的前端 有没有办法获取特定用户及其属性 长度 复杂性 的密码策略 例如细粒度 有没有办法根据此特定策略检查字符串 xyz121 编辑 我不想检查活动目录中存储的当前密码 我想检查
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 何时分离或加入 boost 线程?

    我有一个方法 大约每 30 秒触发一次 我需要在一个线程中包含它 我有一个可以从类外调用的方法 像 call Threaded Method 这样的东西会创建一个线程 该线程本身会调用最终的线程方法 这些是 MyClass 的方法 void
  • 这些工作队列标志意味着什么?

    在研究工作队列时 我遇到了内核中定义的工作队列标志和常量 我有以下我无法理解的疑问 这里的排水和救援到底是什么意思 WQ DRAINING 1 lt lt 6 internal workqueue is draining WQ RESCUE
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 按 Enter 继续

    这不起作用 string temp cout lt lt Press Enter to Continue cin gt gt temp cout lt lt Press Enter to Continue cin ignore 或更好 in
  • 如何使 WinForms UserControl 填充其容器的大小

    我正在尝试创建一个多布局主屏幕应用程序 我在顶部有一些按钮链接到应用程序的主要部分 例如模型中每个实体的管理窗口 单击这些按钮中的任何一个都会在面板中显示关联的用户控件 面板包含用户控件 而用户控件又包含用户界面 WinForms User
  • 在 lua 中加载 C++ 模块时出现“尝试索引字符串值”错误

    我正在尝试使用 lua 用 C 编写的函数 下面给出的是cpp文件 extern C include lua h include lauxlib h include lualib h static int add 5 lua State L
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 是否可以检测流是否已被客户端关闭?

    简要介绍一下情况 我有一项服务可以通过套接字接收信息并发送回复 连接不安全 我想设置另一个可以为这些连接提供 TLS 的服务 这个新服务将提供单个端口并根据提供的客户端证书分发连接 我不想使用 stunnel 有几个原因 其中之一是每个接收
  • 有没有办法在 C# 中仅通过文件名查找文件?

    我们现在使用绝对路径或相对路径在 C 应用程序中查找文件 如果文件位于当前工作目录下或 路径 之一下 有没有办法仅通过名称查找文件 使用绝对路径不好 使用相对路径也不够好 因为我们可能通过重命名或移动项目文件夹来更改项目结构 如果我们的代码

随机推荐

  • 如何在 Heroku 上运行启用了 ES2017 功能的 Node.js 应用程序?

    我是 Node 新手 创建了一个应用程序 其中包含一些 async await 语法 如下所示 const express require express const app express const someLibrary requir
  • 为什么“位置:相对”会干扰“变换:比例”?

    给定以下标记和样式 div width 300px height 50px border 1px solid black display inline block transition all 1s ease in out backgrou
  • 使用类变量与将局部变量发送到函数/方法

    什么时候将局部变量作为参数推送到函数 方法而不是使用类变量代替函数 方法变量是一种好的形式 例如 我可以有一个函数 int DoSomething int var if var 1 return 0 或者我可以有一个类变量 var 并在同一
  • GetxControllers 是否会自动关闭 obs 流?

    我正在使用以下包https pub dev packages get 我需要在 GetxController 的 onClose 中关闭我的 obs 吗 我在文档中找不到任何关于此的信息 看看我的记忆 它们似乎正在被自动销毁 到目前为止我对
  • 如何在 Django Formwizard 1.4 中动态重复步骤?

    我试图根据步骤中的复选框有条件地重复 Django Formwizard Django 1 4 中的步骤 该表单创建一个对象 并有一个复选框 希望 允许他们重复该步骤并使用相同的表单创建同一模型的另一个对象 我看到了这个答案 Django
  • 如何在不破坏原数组的情况下对数组进行排序?

    我有原始数组 public static void main String arg int array 1 5 6 8 4 2 for int i 0 i lt array length i System out print List 1
  • 打开时默认状态为“未知”

    我经常看到人们使用OPEN未明确指定的语句STATUS 在 Fortran 90 和 2008 标准中 这是关于STATUS 如果指定 UNKNOWN 则状态取决于处理器 如果省略此说明符 则默认值为 UNKNOWN 我将其解释为 如果ST
  • 使用 XStream 从 XML 文件生成 Java 类

    我有很多 xml 文件 我想使用 XStream 来管理它们 是否可以使用 XStream 生成与我的 xml 文件相对应的 java 类 XStream是一个用于将 Java 对象序列化为 XML 以及从 XML 反序列化的软件 XStr
  • 提高性能的最佳方法(并包括某种故障转移)

    我们有一个应用程序正在运行 其中 IIS 和 SQL 在同一台计算机上 它是一个windows2003standard 服务器 在VM 上运行4gigs RAM 现在用户数量正在不断增长 还有一些巨大的统计数据 它们可以由用户运行 但对其他
  • C# 2.0 中的 HashSet 替换

    I using List
  • 无法从中央传输工件 org.apache.maven.plugins:maven-surefire-plugin:pom:2.7.1 (http://repo1.maven.org/maven2)

    我在 SpringSource Tool Suite 中创建了一个新的 Maven 项目 我在我的新 Maven 项目中收到此错误 转移失败 org apache maven plugins maven surefire plugin po
  • 无需下载即可获取文件大小

    如何从 URL 获取文件大小 在 Flutter 中 我可以通过使用以下方式获得它 http Response response await http get url print response contentLength 但这会下载整个
  • Python:PyQt QTreeview 示例 - 选择

    我正在使用 Python 2 7 和 Qt 设计器 并且我是 MVC 新手 我在 Qt 中完成了一个视图 为我提供了目录树列表 以及用于运行事物的控制器 我的问题是 给定 Qtree 视图 选择目录后如何获取目录 代码快照如下 我怀疑它是
  • 扩展 Django 的通用视图

    我正在用 Django 编写我的第一个应用程序 但我遇到了一个问题create object通用视图 在我的urls py 我有 r new CreateView as view 问题是 当用户提交 新 表单时 我需要操作将保存到数据库的数
  • 使用 Java 的文件资源管理器 - 如何进行?

    我准备使用 Java 创建一个文件浏览器 目的是尽可能模仿默认浏览器的行为 无论底层操作系统是什么 我没有用 Java 做过任何 GUI 编程 我已经查找了 Swing SWT 和 JFace 并且我将通过本教程开始我的项目 http ww
  • window.navigator.userAgent 真的会被弃用吗?

    I just 在 MDN 上阅读关于window navigator userAgent 已弃用 此功能已从 Web 标准中删除 尽管某些浏览器可能仍然支持它 但它正在开发中 被丢弃 不要在旧项目或新项目中使用它 页面或网络应用程序 使用它
  • 使用 gdb/gdbserver 远程调试共享库

    我的问题是关于使用 gdb gdbserver 远程调试嵌入式 Arm 处理器上的应用程序 我可以调试应用程序本身 但应用程序动态链接到实现内部通信协议的共享库 我希望能够在共享库函数中设置断点 因此尝试找出一些设备发现问题 我已确保该库使
  • 将 RxJS Observable 收集到数组

    我想使用 RxJS 将异步事件世界与同步世界 桥接 具体来说 我想创建一个函数 它返回在某个时间间隔内收集的事件数组 我可以创建 Observable 来执行我想要的操作 var source Rx Observable interval
  • 无法识别“pip”[重复]

    这个问题在这里已经有答案了 我尝试安装PySide但我从 powershell 收到错误如下 pip The term pip is not recognized as the name of a cmdlet function scrip
  • 检测可移动介质的弹出/插入

    我正在开发一个项目 需要能够检测何时插入或移除 CD 或 USB 驱动器 我发现一些源代码本应执行此操作 但是 当我插入或弹出 CD 时 似乎没有任何反应 有人可以验证来源是否正确 并指出我在这里可能做错了什么吗 public class