Win32_MountPoint 和 Win32_Volume 在 Windows XP 上是否可用?

2023-11-30

从我找到的 MSDN 文章中——http://msdn.microsoft.com/en-us/library/aa394515(v=VS.85).aspx-- Win32_Volume 和 Win32_MountPoint 在 Windows XP 上不可用。

不过,我正在 Windows XP(64 位)上开发一个 C# 应用程序,并且我可以很好地访问这些 WMI 类。我的应用程序的用户将使用 Windows XP sp2 和 .Net 3.5 sp1。

谷歌搜索了一下,我无法确定我是否可以指望这一点。 我在我的系统上取得成功是否是由于以下一项或多项原因: - Windows XP 服务包 2? - Visual Studio 2008 SP1 已安装? - .Net 3.5 sp1?

我应该使用 WMI 以外的其他方法来获取卷/安装点信息吗?

下面是正在运行的示例代码...

    public static Dictionary<string, NameValueCollection> GetAllVolumeDeviceIDs()
    {
        Dictionary<string, NameValueCollection> ret = new Dictionary<string, NameValueCollection>();

        // retrieve information from Win32_Volume
        try
        {
            using (ManagementClass volClass = new ManagementClass("Win32_Volume"))
            {
                using (ManagementObjectCollection mocVols = volClass.GetInstances())
                {
                    // iterate over every volume
                    foreach (ManagementObject moVol in mocVols)
                    {
                        // get the volume's device ID (will be key into our dictionary)                            
                        string devId = moVol.GetPropertyValue("DeviceID").ToString();

                        ret.Add(devId,  new NameValueCollection());

                        //Console.WriteLine("Vol: {0}", devId);

                        // for each non-null property on the Volume, add it to our NameValueCollection
                        foreach (PropertyData p in moVol.Properties)
                        {
                            if (p.Value == null)
                                continue;
                            ret[devId].Add(p.Name, p.Value.ToString());
                            //Console.WriteLine("\t{0}: {1}", p.Name, p.Value);
                        }

                        // find the mountpoints of this volume
                        using (ManagementObjectCollection mocMPs = moVol.GetRelationships("Win32_MountPoint"))
                        {
                            foreach (ManagementObject moMP in mocMPs)
                            {
                                // only care about adding directory
                                // Directory prop will be something like "Win32_Directory.Name=\"C:\\\\\""
                                string dir = moMP["Directory"].ToString();

                                // find opening/closing quotes in order to get the substring we want
                                int first = dir.IndexOf('"') + 1;
                                int last = dir.LastIndexOf('"');
                                string dirSubstr = dir.Substring(first , last - first);

                                // use GetFullPath to normalize/unescape any extra backslashes
                                string fullpath = Path.GetFullPath(dirSubstr);

                                ret[devId].Add(MOUNTPOINT_DIRS_KEY, fullpath);

                            }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Problem retrieving Volume information from WMI. {0} - \n{1}",ex.Message,ex.StackTrace);
            return ret;
        }

        return ret;

    }

我猜是Win32_MountPoint and Win32_Volume这些类在 Windows XP Professional x64 Edition 上可用,因为它基于 Windows Server 2003 代码库。在 32 位版本的 Windows XP 上,这些类不存在,要执行您的任务,您需要 P/Invoke 本机卷管理功能,如 Tim 所说。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Win32_MountPoint 和 Win32_Volume 在 Windows XP 上是否可用? 的相关文章

  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 链接 .Net 程序集

    这都是假设 所以请耐心等待 假设我正在用 C 编写一个名为 Foo 的工具 输出是 foo exe 我发现了一些我喜欢使用的非常棒的库 称为 Bar 我可以在我的项目中将其引用为 bar dll 当我构建项目时 我的输出目录中有 foo e
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • platformnotsupportedException :XSLCompiledTransform.Load(xslt) 未在 .net Core 2.1 目标框架中加载带有 的 xslt 文件

    我有一个 xml 文件 需要将其转换为 txt 为此我使用了 xslt 转换 我的 xslt 转换文件包含一些支持 javascript 函数 如果我在 net Framework 4 5 及更高版本中运行代码 我可以成功转换文件 但相同的
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • 条件类型定义

    如果我有一小段这样的代码 template
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何对使用 Controller.User 变量的控制器操作进行单元测试?

    我有一个控制器操作 如果用户已经登录 它会自动重定向到新页面 User Identity IsAuthenticated 针对这种情况编写单元测试以确保重定向发生的最佳方法是什么 我一直在使用以下 Mocks 和 Moq 来允许在我的单元测
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • 将键码转换为相关的显示字符

    在 C Windows Forms 项目中 我有一个不提供 KeyPressed 事件的控件 它是一个 COM 控件 ESRI 映射 它仅提供 KeyUp 和 KeyDown 事件 包含关键事件参数 http msdn microsoft
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助

随机推荐

  • 多个组件 - 性能损失?

    我有一个清单System IO Ports SerialPort一个程序集中的对象 并且我计划处理来自另一个程序集的 Data Receieved 事件 我想知道这是否会以某种方式影响性能 会吗 恐怕我不太清楚 CLR 如何管理程序集 谢谢
  • 从 VS 05 中的资源设置应用程序图标

    我知道我可以将图标添加到项目的 Resources resx 文件中 然后从代码中引用该图标 如何从资源中设置整个EXE的图标 我所看到的只是浏览另一个文件的地方 我想使用我的资源中的当前图标文件 而不必在我的项目中拥有重复的文件 than
  • 如何将两个独立但相似的代码库合并到一个 SVN 代表中?

    I have www example com 上的 var www cool codebase 并且我有 www example net 上的 var www cool codebase 代码库适用于在不同服务器上运行的同一 Web 应用程
  • 将 nil 排序到可选字符串数组的末尾

    如果我有一个可选字符串数组 并且我想以 nils 开头按升序对它进行排序 我可以在一行中轻松完成 b nil a sorted 0 lt 1 nil a b 但似乎没有任何类似简单的解决方案可以将 nil 排序到end数组的 使用大多数其他
  • 是否有 Visual Studio 插件的配置类型文件?

    创建 Visual Studio 加载项时 如何利用该加载项的 app config 如果我向项目添加一个并部署它 那么当加载项运行并且我以编程方式尝试通过 ConfigurationManager AppSettings 访问它时 它不会
  • xargs 在搜索中尊重通配符

    我有一个名为 file1 txt 的文件 dir1 dir2 dir3 我想使用 xargs 检查某些文件是否存在于文件系统中 如下所示 cat file1 txt xargs i ls projects analysis7 meta bw
  • IHttpContextAccessor.HttpContext.User.Identity 显示 CurrentUserService 服务中的所有 null 属性

    我正在尝试使用Jason Taylor 的简洁架构模板 这个模板使用 NSwag 自动创建 TypeScript 客户端 Angular 但我不需要创建 TS 客户端 所以我的主要目标是用 Razor Pages 替换它 我已经能够取得高分
  • Cocoa:每次方法调用都会中断?

    通常 在调试时 了解以什么顺序调用类的哪些方法对我来说很重要 天真的解决方案 到目前为止我一直在使用 是弹出一个NSLog在每个方法的顶部 但这是耗时的 重复的 丑陋的 并且如果我在调试后忘记删除日志 会让我的代码看起来很幼稚 一个更干净的
  • Toast 不从列表中选定的项目生成文本

    我在android中用列表视图制作了一个简单的应用程序 因为我想在选择一个项目时进行吐司 我已经尝试如下 但它不起作用 我的代码如下 main java package com example listview import java ut
  • ZF2 骨架应用程序抛出 500 错误

    当尝试使用以下命令部署骨架应用程序时 git clone git github com zendframework ZendSkeletonApplication git cd ZendSkeletonApplication php com
  • 将数组传递给 useEffect 依赖项列表

    每 5 秒长轮询会产生一些数据 我希望我的组件在每次数组的一项 或数组长度本身 发生变化时调度一个操作 在将数组作为依赖项传递给 useEffect 时 如何防止 useEffect 进入无限循环 但如果任何值发生变化 仍然设法调度一些操作
  • 运算符和方法之间的区别

    运算符和方法之间有本质区别吗 我看到的唯一区别是它们的调用方式 它们还有其他区别吗 例如在Python中连接 切片 索引被定义为运算符 而 指字符串 upper replace strip 等等都是方法 如果我正确理解问题 简而言之 一切都
  • Python pygame 未安装

    C Users matth gt pip3 安装 pygame 收集pygame 使用缓存的 pygame 2 1 2 tar gz 10 1 MB 准备元数据 setup py 错误 错误 子进程退出并出现错误 python setup
  • Javascript 和 RegEx:分割​​并保留分隔符

    我有一个正则表达式 它将把我的字符串分割成数组 一切工作正常 除了我想保留分隔符的一部分 这是我的正则表达式 a zA Z0 9 s 在 JavaScript 中 我正在做 var test paragraph split a zA Z0
  • 有没有办法使用 ServiceTask 在控制台应用程序中托管 Razor 页面?

    我正在尝试创建一个控制台应用程序来公开 JSON 服务 另外我想托管 html 和 js 页面来使用它们 我将 md 甚至 htm 文件放入 Views 文件夹中 但我无法访问它们 如果我添加一条路线 Add Test 其中 MyMarkd
  • 46 个 SQL 加载程序的控制文件

    我必须使用 SQL Loader for Oracle 加载 46 个表的数据 所有数据文件均为 CSV CSV 中的列顺序与表中的列顺序匹配 我需要为每个表创建一个控制文件 我批量生产这些文件的最佳方法是什么 我知道这是一个老问题 但它仍
  • Android DexClassLoader 错误,“优化数据目录..不属于当前用户”

    我正在尝试生成一个简单的 Android 应用程序 可以在运行时从 SD 卡加载 DEX 文件 该应用程序有两个活动 第一个活动是一个带有按钮的简单屏幕 当按下按钮时 将启动第二个活动 从而调用 loadDex 方法 loadDex 方法尝
  • 如何初始化相互引用的结构体字段

    我目前想定义一个结构体Piston使用 GamerIterator 进行游戏 pub struct MyGame lt a gt game window GameWindowGLFW game iter GameIterator lt a
  • 将字典保存到 NSUserDefaults 中

    class AddElementVC UIViewController textfields and some other functions are defined here IBAction func addElement sender
  • Win32_MountPoint 和 Win32_Volume 在 Windows XP 上是否可用?

    从我找到的 MSDN 文章中 http msdn microsoft com en us library aa394515 v VS 85 aspx Win32 Volume 和 Win32 MountPoint 在 Windows XP