WMI Win32_Share Windows 10 拒绝访问

WMI Win32_Share Access Denied on Windows 10

我们使用以下代码在 Windows 7 中创建共享:

    public static CreateUncShareResult Create(string path, string shareName, string description, AccessControlList permissions) {
        ManagementClass managementClass = new ManagementClass(WIN32_Share);
        const string METHOD_NAME = "Create";
        ManagementBaseObject inParams = managementClass.GetMethodParameters(METHOD_NAME);
        inParams["Description"] = description;
        inParams["Name"] = shareName;
        inParams["Path"] = path;
        inParams["Type"] = 0x0; // Disk Drive
        inParams["Access"] = permissions;

        ManagementBaseObject outParams = managementClass.InvokeMethod(METHOD_NAME, inParams, null);
        return (CreateUncShareResult)(outParams.Properties["ReturnValue"].Value);
    }

public enum CreateUncShareResult: uint {
    Success = 0,
    [Description("Access Denied")]
    AccessDenied = 2,
    [Description("Unknown failure")]
    UnknownFailure = 8,
    [Description("Invalid Name")]
    InvalidName = 9,
    [Description("Invalid Level")]
    InvalidLevel = 10,
    [Description("Invalid Parameter")]
    InvalidParameter = 21,
    [Description("Duplicate Share")]
    DuplicateShare = 22,
    [Description("Redirected Path")]
    RedirectedPath = 23,
    [Description("Unknown Device or Directory")]
    UnknownDeviceOrDirectory = 24,
    [Description("Net Name Not Found")]
    NetNameNotFound = 25,
}

它一直运行良好。最近,我们得到了 Windows 10 的新开发机器。上面的代码现在失败了,返回值 2:拒绝访问。

我们一直在四处寻找发生这种情况的原因。运行此代码的用户具有本地管理员权限。

Windows 7 和 Windows 10 之间有什么不同会导致这种情况吗?是否需要在 Windows 10 中授予某些在 Windows 7 中不需要的特殊权限?

编辑:我们在 Asp.Net MVC 5 网络应用程序中执行此操作,而不是在桌面应用程序或 Windows 服务中执行此操作。我们确实有一个运行此代码的自动化测试,并且出现了相同的结果。调用此代码的代码会提升(模拟)计算机上的本地管理员用户。

事实证明,我们的首席系统工程师对此有答案。这是UAC的问题。但是,如上所述,由于这是一个 Web 应用程序,因此该解决方案不涉及使用应用程序清单提升权限。我需要编辑组策略。

使用 gpedit:

计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项

需要禁用 "User Account Control: Run all administrators in Admin Approval Mode" 的设置。