问题标签 [system.management]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 仅使用 WMI 查询获取真正的适配器信息?
我试图使用 WMI 获取一些系统信息,
但问题是当我想获取例如图形卡信息时.. 我有很多驱动程序(真实和虚拟)
结果是:
Radmin Mirror Driver v3
ATI Mobility Radeon HD 5650
LogMeIn Mirror Driver
PCI GDIHOOK5
所以我决定编辑查询以仅获取真实的查询。在这种情况下,真实的查询应该具有不等于 null 的 AdapterRam
结果是:
ATI Mobility Radeon HD 5650
字节数
有没有更好和更通用的方法来只在 WMI 中获取真正的 adpaters?
clrstoredprocedure - 在哪里可以找到 System.management dll
我正在尝试构建一个引用 IBM WebSphere MQ dll 的 SQL CLR 存储过程。我在我的工作机器上执行此操作时遇到问题,所以我决定看看我是否可以使用 localhost 让它在我的家庭计算机上工作。我在遇到不同的错误方面取得了进展,但是我不确定 system.management dll 的位置...
这是错误消息的副本:
消息 10301,级别 16,状态 1,第 1 行程序集“amqmdnet”引用程序集“system.management,版本=2.0.0.0,文化=中性,publickeytoken=b03f5f7f11d50a3a.”,当前数据库中不存在。SQL Server 试图从引用程序集所在的同一位置定位并自动加载引用程序集,但该操作失败(原因:2(系统找不到指定的文件。))。请将引用的程序集加载到当前数据库中,然后重试您的请求。
c# - Get-WMIObject 无法在提升的 powershell 中枚举 Win32_LogicalDiskToPartiion
我有一个非常简单的 Powershell 查询:
在 Windows 7(64 位)机器上,在 Powershell 中运行它会正确枚举单个管理对象。但是,如果我在提升的 Powershell 中运行相同的查询,我会暂停很长时间,然后没有结果。
我在尝试在代码中执行 WMI 查询时发现了一个类似的问题(这是我实际上想要做的)——当我的程序在没有提升的情况下运行时,代码可以工作,当它在提升的情况下运行时没有返回结果。这是显示此问题的代码的最简单版本:
为什么会这样?更重要的是,无论如何,我可以确保在提升运行时此查询将正确执行 - 因为最终程序由于其他原因需要运行提升。
c# - MSTest 期间终结器中的 NullReferenceException
(我知道,这是一个非常长的问题。到目前为止,我试图将这个问题与我的调查分开,所以它更容易阅读。)
我正在使用 MSTest.exe 运行我的单元测试。有时,我会看到此测试错误:
关于单个单元测试方法:“在测试运行时代理进程已停止。”
在整个测试运行中:
所以,这就是我认为我需要做的事情:我需要找出导致 MetaDataInfo 错误的原因,但我正在画一个空白。我的单元测试套件运行需要半个多小时,而且错误不是每次都发生,所以很难让它重现。
有没有其他人在运行单元测试时看到过这种类型的失败?您是否能够将其追踪到特定组件?
编辑:
被测代码混合了 C#、C++/CLI 和一些非托管 C++ 代码。非托管 C++ 仅在 C++/CLI 中使用,从不直接从单元测试中使用。单元测试都是 C#。
被测代码将在独立的 Windows 服务中运行,因此 ASP.net 或类似的东西没有任何复杂性。在被测代码中,有线程启动和停止、网络通信和本地硬盘驱动器的文件 I/O。
到目前为止我的调查:
我花了一些时间在我的 Windows 7 机器上挖掘 System.Management 程序集的多个版本,并在我的 Windows 目录中的 System.Management 中找到了 MetaDataInfo 类。(Program Files\Reference Assemblies 下的版本要小得多,并且没有 MetaDataInfo 类。)
使用 Reflector 检查这个程序集,我发现 MetaDataInfo.Dispose() 中似乎有一个明显的错误:
向后使用此“if”语句,MetaDataInfo 将泄漏 COM 对象(如果存在),或者抛出 NullReferenceException(如果不存在)。我已经在 Microsoft Connect 上报告了这一点:https ://connect.microsoft.com/VisualStudio/feedback/details/779328/
使用反射器,我能够找到 MetaDataInfo 类的所有用途。(它是一个内部类,所以只搜索程序集应该是一个完整的列表。)它只有一个地方使用:
由于 MetaDataInfo 的所有使用都被正确处理,这就是正在发生的事情:
- 如果 MetaDataInfo.importInterface 不为空:
- 静态方法 GetMvid 返回 MetaDataInfo.Mvid
using
调用 MetaDataInfo.Dispose- Dispose 泄漏 COM 对象
- Dispose 将 importInterface 设置为 null
- Dispose 调用 GC.SuppressFinalize
- 稍后,当 GC 收集 MetaDataInfo 时,会跳过终结器。
- .
- 如果 MetaDataInfo.importInterface 为空:
- 静态方法 GetMvid 获取调用 MetaDataInfo.Mvid 的 NullReferenceException。
- 在异常向上传播之前,
using
调用 MetaDataInfo.Dispose- Dispose 调用 Marshal.ReleaseComObject
- Marshal.ReleaseComObject 引发 NullReferenceException。
- 因为抛出异常,Dispose 不会调用 GC.SuppressFinalize
- Dispose 调用 Marshal.ReleaseComObject
- 异常传播到 GetMvid 的调用者。
- 稍后,当 GC 收集到 MetaDataInfo 时,它会运行 Finalizer
- 完成调用 Dispose
- Dispose 调用 Marshal.ReleaseComObject
- Marshal.ReleaseComObject 抛出一个 NullReferenceException,它一直传播到 GC,应用程序被终止。
- Dispose 调用 Marshal.ReleaseComObject
- 完成调用 Dispose
对于它的价值,这里是来自 MetaDataInfo 的其余相关代码:
编辑2:
我能够在 Microsoft 的 MetaDataInfo 类中重现该错误。但是,我的复制与我在这里看到的问题略有不同。
- 复制:我尝试在不是托管程序集的文件上创建 MetaDataInfo 对象。
importInterface
这会在初始化之前从构造函数中引发异常。 - 我对 MSTest 的问题:MetaDataInfo 是在某个托管程序集上构造的,并且在初始化
之前发生了一些事情使
importInterface
null 或退出构造函数。importInterface
- 我知道 MetaDataInfo 是在托管程序集上创建的,因为 MetaDataInfo 是一个内部类,并且唯一调用它的 API 是通过传递Assembly.Location的结果来实现的。
但是,在 Visual Studio 中重新创建问题意味着它为我将源下载到 MetaDataInfo。这是实际代码,以及原始开发人员的评论。
原始代码证实了在反射器中看到的内容:if 语句是向后的,它们不应该从终结器访问托管对象。
我之前说过,因为它从来没有调用ReleaseComObject
,它正在泄漏 COM 对象。我阅读了更多关于 .Net 中使用 COM 对象的信息,如果我理解正确,那是不正确的:调用 Dispose() 时 COM 对象没有被释放,但是当垃圾收集器到达时它被释放收集运行时可调用包装器,它是一个托管对象。尽管它是一个非托管 COM 对象的包装器,但 RCW 仍然是一个托管对象,并且关于“不要从终结器访问托管对象”的规则仍然应该适用。
c# - win32_networkaddressconfiguration 没有ip地址
我正在从Win32_NetworkAdapterConfiguration
C# 的类中收集所有网络适配器配置。我使用这个查询:
但是,在选择我用来连接到Internet的NetworkAdapter时,它就说,IPEnabled = false
当我调用数组时IPAddresses
,我得到了nullpointerexception(意味着array = null)。
我这样称呼地址:
eInterfacesConfig
是 aManagementObjectCollection.Enumerator
并且选择的是当前ManagementObject
的枚举数。
我尝试将标签 (lblIP) 的文本更改为数组中的第一个 IP 地址。但这是引发异常的地方。
有人可以解释为什么,也许可以指出我正确的方向吗?
c# - 在 Linux 上运行 Dot Net 项目 exe,它利用 System.Management 获取 USB 设备信息
嗨,我在 C# 中创建了一个 Dot Net 应用程序,以使用 System.Management 命名空间获取 USB 设备信息,如 DeviceID、Caption、ClassGUID 等。我正在使用 ManagementObjectSearcher 方法从 Win32_DiskDrive 获取值。它在 Windows 上运行良好。我想在 Linux 机器上运行它。您可以使用 Mono 在 Linux 机器上运行 Dot Net 应用程序。
http://mono-project.com/Main_Page当我使用 Mono 在 Linux 上运行我的应用程序的 exe 时,我收到以下错误:
谁能帮我解决这个问题。我想知道如何使用 System.Management 命名空间在 Linux 机器上运行我的 Dot Net exe 来检索 USB 设备的信息
谢谢
vb.net - 文本框文本在 VB.NET 中不使用空格进行解析
我有一个将使用目录结构填充的文本框(例如,C:\Program Files\Visual Basic)。我正在尝试textbox.text
在另一个变量中使用该对象,但是当路径包含空格时,信息将被切断。
这是使用路径填充文本框的违规代码:
请注意,它用于FolderBrowserDialog
填充文本框,这部分工作正常。我有另一个按钮单击,然后textbox.text
在我在其他地方定义的函数中使用特定文件名:
它永远无法解析文件名,例外是:
c# - C# - Powershell AddPSSnapin 导致错误
所以,我导入System.Management.Automation
dll 并尝试New-Mailbox
使用参数运行命令
所以我使用:
这一切都很好,花花公子......但是当我去运行应用程序时,我得到以下信息:
Cannot load Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because of the following error: The type initializer for 'Microsoft.Exchange.Data.Directory.Globals' threw an exception.
所以,我在网上做了一些研究,发现我需要从 to 更改Any CPU
为x86
平台目标。
但是,当我这样做时,我得到一个HTTP Error 503. The service is unavailable.
错误
我几乎肯定我必须将它作为 32 位进程运行,以便它可以使用管理单元(从其他阅读来看,管理单元似乎正在运行)
我确实将应用程序池更改Enable 32-bit Applications
为True
. 这是我得到错误的时候。
我读过其他帖子......但是,我不知道如何克服这个Service unavailable
问题。
我尝试使用 x64 构建并获取Could not load file or assembly 'EmailAdminWeb2' or one of its dependencies. An attempt was made to load a program with an incorrect format.
c# - 如何使用 C# 在 C# 中打印 pdf
我使用“进程”在 C# 应用程序中打印 pdf 文件。但我无法获得打印状态。我发现可以使用 System.management 和 System.printing 与打印机/队列交互。我做了很多试验 n 错误使用这两个命名空间,但无法打印文件。关于如何使用这些命名空间将 pdf 文档打印到打印机的任何示例?
c# - 用 C# 打印或不打印文档
我使用以下代码打印 pdf :
以下以获取打印机的状态:
并尝试以下监控打印队列:
我只想知道我使用(1)打印的文档是否成功打印!(2)nd 代码片段总是显示相同的属性 anme 和值。因此无法通知打印状态。(3)rd 代码片段总是监视队列一次并显示“0”作业数。
那么取回打印状态的实际方法是什么?