猿问

WMI Win32_Share Access 在 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 Web 应用程序中执行此操作,而不是在桌面应用程序或 Windows 服务中执行此操作。我们确实有一个运行此代码的自动化测试,并且会出现相同的结果。调用此代码的代码提升(模拟)作为计算机本地管理员的用户。


有只小跳蛙
浏览 214回答 1
1回答

手掌心

事实证明,我们的首席系统工程师给出了这个答案。这是UAC的问题。但是,如上所述,由于这是一个 Web 应用程序,因此该解决方案不涉及使用应用程序清单提升权限。我需要编辑组策略。使用 gpedit:计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项需要禁用“用户帐户控制:在管理员批准模式下运行所有管理员”的设置。
随时随地看视频慕课网APP
我要回答