如何在管理控制台中打开所选对象的属性对话框?

2024-04-09

我正在寻找为特定 Windows 对象打开默认属性对话框的可能性,例如:

  • services.msc 中特定服务的属性对话
  • taskschd.msc 中特定计划任务的属性对话
  • etc.

我不想与该对话交互或更改任何属性。我只想打开它们,让用户直接访问单个项目属性(而不是打开列表(通过调用 *.msc 可执行文件),用户必须在其中再次搜索对象)。

顺便说一句,我已经将对话功能部分复制到自己的表单和代码中以用于其他目的,但我想为用户提供打开默认功能并直接进行任何更改的选项。

现在,我找到了一些提示,但我陷入困境,因为总是缺少一些关键信息:

1.使用所谓的MMC(Microsoft管理控制台)的SnapIn

这个相对较新的答案 https://stackoverflow.com/a/60697695/12622162它使用 VB 代码,但我不知道如何在 C# .NET Framework 中使用 MMC 自动化对象模型。

此外,没有简单明了的示例/说明如何通过使用来简单地调用现有的 .msc 进程/列表/窗口微软管理控制台 https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mmc/reference/ms694632(v=vs.85)。相反,有几个令人恐惧的复杂教程如何在 C# 中实现 SnapIn。

这里需要明确的是:我想要做的是引用一个 dll,浏览一些列表(如果需要),然后调用属性对话框。

2.旧API的COM调用

这个旧答案 https://social.msdn.microsoft.com/Forums/vstudio/en-US/0928fe2f-d4dc-474e-812b-28590ff8a190/open-the-properties-dialog-of-a-scheduled-task有人建议在过时的 ITaskScheduler 类上使用 invoke ,该类不能解决一般对话调用,但至少可以解决计划任务的问题。也许也可以对服务等使用类似的东西 - 但是,同样,没有明确的示例或解释如何实现这种方法。


这相对简单。

  • 添加 COM 引用Microsoft Management Console 2.0.
  • Add the using MMC20指示。
  • 创建一个新的MMC20.应用 https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mmc/application-object object
  • Use the 应用程序.Load() https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mmc/application-load加载管理单元的方法(services.msc here)
  • The 活动视图 https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mmc/document-activeview of the 申请文件 https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mmc/application-document包含项目列表:ListItems 属性 https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mmc/view-listitems
  • 按名称或索引选择节点并调用显示选择属性表() https://learn.microsoft.com/en-us/previous-versions/windows/desktop/mmc/view-displayselectionpropertysheet显示其属性窗格的方法

例如:

注:设置mmcApp.UserControl = 1;让控制台保持打开状态,否则它将关闭。

using MMC20; 
// [...]

MMC20.Application mmcApp = new MMC20.Application();
mmcApp.UserControl = 1;
mmcApp.Load("services.msc");

var doc = mmcApp.Document;
var view = doc.ActiveView;
var node = view.ListItems.OfType<Node>().FirstOrDefault(n => n.Name == "Base Filtering Engine");

if (node != null) {
    view.Select(node);
    view.DisplaySelectionPropertySheet();
}

要枚举 ListItems,请使用标准循环或扩展方法,如上所示:

var nodes = view.ListItems;

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

如何在管理控制台中打开所选对象的属性对话框? 的相关文章

  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout
  • 如何将字节块读入结构体

    我有一个需要处理的资源文件 它包含一组文件 首先 资源文件列出了其中包含的所有文件 以及一些其他数据 例如在此结构中 struct FileEntry byte Value1 char Filename 12 byte Value2 byt
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • 将成员函数作为参数传递/c++

    我想用 C 实现一个类b可以通过封装该迭代器类型的成员集进行某种迭代 喜欢 b object for each x do function f so 函数 f会得到每个人的x成员并做任何事情 比方说 void function f x me
  • 特定设备的不同字体大小

    我目前正在开发通用应用程序 我需要分别处理移动设备和桌面的文本框字体大小 我找到了一些方法 但都不能解决问题 使用 VisualStateManager 和 StateTrigger 为例
  • 生成 .tail IL 指令的简单 F# 代码是什么?

    我想看看 tailIL 指令 但我一直在编写的使用尾部调用的简单递归函数显然已优化为循环 我实际上是在猜测这一点 因为我不完全确定反射器中的循环是什么样的 我绝对没有看到任何 tail不过操作码 我在项目的属性中检查了 生成尾部调用 我还尝
  • 用 C# 制作 Vista 风格的应用程序

    我正在运行 Windows Vista 并且希望外观看起来像常规 Vista 程序 有没有关于如何构建 Vista 风格应用程序的真正好的教程 文章 我还想学习如何使用本机代码并将其转换为 C 如this http bartdesmet n
  • 指示泛型返回动态类型的对象

    这个问题是我原来问题的后续问题here https stackoverflow com questions 2541184 using a type object to create a generic 假设我有以下泛型类 简化 class
  • 如何将字符串转换为 Indian Money 格式?

    我正在尝试将字符串转换为印度货币格式 例如如果输入为 1234567 则输出应为 12 34 567 我编写了以下代码 但它没有给出预期的输出 CultureInfo hindi new CultureInfo hi IN string t
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • 我应该如何在 VB.NET 中进行转换?

    所有这些都相等吗 在什么情况下我应该选择其中一个而不是其他 var ToString CStr 变量 CType 变量 字符串 DirectCast 变量 字符串 编辑 来自的建议不是我自己 https stackoverflow com
  • realloc():重新分配为 char * 上的 strcat 腾出空间时下一个大小无效 [重复]

    这个问题在这里已经有答案了 我在以下代码中收到无效内存错误 printf s n FINE 5 printf s LENGTH IS d n FINE 6 strlen buffer char realloc buffer strlen b
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join
  • 理解 C++11 中的 std::atomic::compare_exchange_weak()

    bool compare exchange weak T expected T val compare exchange weak 是 C 11 中提供的比较交换原语之一 它是weak即使对象的值等于 它也会返回 falseexpected
  • 将 bignum 类型结构转换为人类可读字符串的有效方法是什么?

    我有一点问题 为了增长我的 C 知识 我决定尝试实现一个基本的 bigint 库 bigint 结构的核心将是一个 32 位整数数组 选择它们是因为它们适合寄存器 这将允许我在数字之间进行操作 这些操作将在 64 位整数中溢出 这也将适合寄
  • 微软语音识别速度

    我正在使用微软的语音识别器开发一个小型练习应用程序 对于我正在做的事情来说 我似乎无法让它足够快地识别单个单词 我希望能够正常说话 系统将从我所说的内容中抓取 关键字 并生成一个字符串 目前我正在使用 5 个单词的自定义语法 红 蓝 黄 绿
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 检测 SignalR Hub 客户端立即断开连接

    SignalR Hub OnDisconnected 何时在服务器端引发 对于崩溃或关闭而不调用Stop method 我正在使用 SignalR NET 客户端进行测试 而不是 javascript 客户端 如果我打电话给Stop客户端上
  • 使用剪贴板 SetText 换行

    如何使用 SetText 方法添加换行符 I tried Clipboard SetText eee n xxxx 但当我将剪贴板数据粘贴到记事本中时 它没有给我预期的结果 预期结果 eee xxxx 我怎样才能做到这一点 Windows

随机推荐