c# - 使用 ManagementClasses 添加 ScriptMap 对象

标签 c# wmi

我已经问过一个相关的问题,但遗憾的是答案虽然正确,但并没有真正解决我的问题。

我正在使用 ManagementClass/ManagementObject WMI API(因为它比 DirectoryEntry API 更能处理远程管理)。我想从

中完全删除现有的脚本映射

使用通用字符串格式解决方案似乎适用于 VBS,但不适用于 ManagementClass API。因此,我一直在尝试编写一些内容来创建正确的脚本映射对象数组,例如

    foreach (var extension in extensions) {
        var scriptMap = scriptMapClass.CreateInstance();
        SetWmiProperty(scriptMap, "ScriptMap.Extensions", "." + extension);

不幸的是,SetWmiProperty 函数似乎无法实现。如果我尝试以下操作

wmiObject.Properties.Add(propertyName, CimType.SInt32);

我得到“由于对象的当前状态,操作无效。”。另一方面,如果我只是尝试设置该属性,我会被告知该属性不存在。 scriptMap 类具有路径“ScriptMap”,这是现有对象显示的路径。

有人有任何使用 ManagementClass API 操作 ScriptMap 的工作代码吗?

最佳答案

Richard Berg 概述的技术的 C# 示例。

static void ConfigureAspNet(ManagementObject virtualDirectory, string version, string windowsLocation, IEnumerable<string> extensions)
    {
        var scriptMaps = virtualDirectory.GetPropertyValue("ScriptMaps");
        var templateObject = ((ManagementBaseObject[])scriptMaps)[0];
        List<ManagementBaseObject> result = new List<ManagementBaseObject>();
        foreach (var extension in extensions) {
            var scriptMap = (ManagementBaseObject) templateObject.Clone();
            result.Add(scriptMap);
            if (extension == "*")
            {
                scriptMap.SetPropertyValue("Flags", 0);
                scriptMap.SetPropertyValue("Extensions", "*");
            } else
            {
                scriptMap.SetPropertyValue("Flags", 5);
                scriptMap.SetPropertyValue("Extensions", "." + extension);
            }
            scriptMap.SetPropertyValue("IncludedVerbs", "GET,HEAD,POST,DEBUG");
            scriptMap.SetPropertyValue("ScriptProcessor",
                string.Format(@"{0}\microsoft.net\framework\{1}\aspnet_isapi.dll", windowsLocation, version));
        }
        virtualDirectory.SetPropertyValue("ScriptMaps", result.ToArray());
        virtualDirectory.Put();
    }

关于c# - 使用 ManagementClasses 添加 ScriptMap 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/465548/

相关文章:

c# - 从 ASP.NET 中的代码隐藏变量中为 SQL Server 中的 Select Top 设置变量

powershell - 使用 Powershell 删除不存在的网络适配器

c# - .NET 中缓存数据的安全性

c# - 模拟和 CurrentUser 注册表访问

C# 包装原语

windows - 创建 WMI 类并添加静态属性或默认值

c# - 以编程方式重命名计算机 c# .net

c# - 使用端口查找应用程序

c# - 使用 foreach 循环从 System.String[] 打印值

c# - ListView CheckBox 数据绑定(bind)——移除勾选项