WMI Win32_Share Отказано в доступе на Windows 10 - PullRequest
0 голосов
/ 10 мая 2018

У нас есть следующий код, который мы использовали для создания общих ресурсов в 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: Access Denied.

Мы искали все выше и ниже по причине, почему это происходит. Пользователь, который запускает этот код, имеет права локального администратора.

Есть ли какая-то разница между Windows 7 и Windows 10, которая может вызвать это? Есть ли какое-то специальное разрешение, которое необходимо предоставить в Windows 10, которое не требовалось в Windows 7?

Редактировать: Мы делаем это в веб-приложении Asp.Net MVC 5, а НЕ в настольном приложении или службе Windows. У нас есть автоматический тест, который запускает этот код, и получается тот же результат. Код, который вызывает этот код, повышает (олицетворяет) пользователя, который является локальным администратором на компьютере.

1 Ответ

0 голосов
/ 14 мая 2018

Оказывается, наш главный системный инженер получил ответ на этот вопрос. Это проблема с UAC. Однако, как уже упоминалось выше, поскольку это веб-приложение, решение не включает в себя подъем разрешений с помощью манифеста приложения. Мне нужно было отредактировать групповую политику.

Использование gpedit:

Конфигурация компьютера -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Параметры безопасности

Параметр «Контроль учетных записей пользователей: запускать всех администраторов в режиме одобрения администратором» необходимо отключить.

...