У нас есть следующий код, который мы использовали для создания общих ресурсов в 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. У нас есть автоматический тест, который запускает этот код, и получается тот же результат. Код, который вызывает этот код, повышает (олицетворяет) пользователя, который является локальным администратором на компьютере.