我们使用以下代码在 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 服务中执行此操作。我们确实有一个运行此代码的自动化测试,并且会出现相同的结果。调用此代码的代码提升(模拟)作为计算机本地管理员的用户。
手掌心
相关分类