Tôi đang cố gắng để kết nối một phần (giả sử \ server \ thư mục) vào thiết bị X địa phương của tôi:WNetAddConnection2 trả Lỗi 1200 - tên địa phương là hợp lệ
[DllImport("Mpr.dll", CharSet = CharSet.Unicode, SetLastError = true)]
private static extern int WNetAddConnection2(
[In] NetResource lpNetResource,
string lpPassword,
string lpUsername,
int flags
);
public static bool Connect(string remoteName, string localName, bool persistent) {
if (!IsLocalPathValid(localName)) return false;
var r = new NetResource
{
dwScope = ResourceScope.RESOURCE_GLOBALNET,
dwType = ResourceType.RESOURCETYPE_ANY,
dwDisplayType = ResourceDisplayType.RESOURCEDISPLAYTYPE_SHARE,
dwUsage = ResourceUsage.RESOURCEUSAGE_CONNECTABLE,
lpRemoteName = remoteName,
lpLocalName = localName
};
return WNetAddConnection2(r, null, null, persistent ? 1 : 0) == 0;
}
[StructLayout(LayoutKind.Sequential)]
public class NetResource {
public ResourceScope dwScope;
public ResourceType dwType;
public ResourceDisplayType dwDisplayType;
public ResourceUsage dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
}
Khi gọi
Connect(@"\\server\folder", "X:", true);
hàm chỉ trả về false - Error nói 1200 (BAD_DEVICE). Các NetResource trông như thế này:
lpRemoteName = "\\\\server\\folder";
lpProvider = null;
lpLocalName = "X:";
lpComment = null;
dwUsage = Connectable;
dwType = Any;
dwScope = GlobalNet;
dwDisplayType = Share;
Tôi đã kiểm tra với một số đoạn (PInvoke) đưa tôi không thể nhìn thấy bất kỳ sự khác biệt. Có lẽ bạn có thể giải quyết bí ẩn này ...
EDIT1
Ổ đĩa bản đồ có hoạt động nếu bạn không đặt tên địa phương không? tức là, làm cho 'localName' thành một chuỗi rỗng. Điều này có thể cung cấp một số đầu mối cho dù có bất kỳ vấn đề khác. Mã lỗi 1200 có nghĩa là có điều gì đó không đúng với "X: \" của bạn - có thêm khoảng trống nào không (vui lòng xem - https://stackoverflow.com/questions/31137879/excel-to-sharepoint-mapnetworkdrive-error) – Subbu
Thật không may là không - Lỗi 1200 vẫn tồn tại, ngay cả khi không có ổ đĩa cục bộ được chỉ định (chuỗi trống). Xem Edit1 của tôi để biết thêm chi tiết về NetResource. (Tôi phải xóa tên máy chủ, xin lỗi – C4p741nZ