Je suis en train de connecter une part (disons \ server dossier \) à mon appareil local X:WNetAddConnection2 retourne Erreur 1200 - Nom local est valide
[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;
}
Lorsque vous appelez
Connect(@"\\server\folder", "X:", true);
la fonction retourne juste false - l'erreur dit 1200 (BAD_DEVICE). Le NETRESOURCE ressemble à ceci:
lpRemoteName = "\\\\server\\folder";
lpProvider = null;
lpLocalName = "X:";
lpComment = null;
dwUsage = Connectable;
dwType = Any;
dwScope = GlobalNet;
dwDisplayType = Share;
je l'ai déjà vérifié avec plusieurs extraits (PInvoke) mis je ne vois aucune différence. Peut-être que vous pouvez résoudre ce mystère ...
EDIT1
Le lecteur de carte fonctionne-t-il si vous ne donnez pas de nom local? c'est-à-dire, rendre 'localName' une chaîne vide. Cela peut donner une idée de l'existence d'un autre problème. Le code d'erreur 1200 signifie qu'il y a quelque chose qui ne va pas avec votre "X: \" - y a-t-il de l'espace supplémentaire? (Voir https://stackoverflow.com/questions/31137879/excel-to-sharepoint-mapnetworkdrive-error) – Subbu
Malheureusement non - l'erreur 1200 persiste, même sans lecteur local spécifié (chaîne vide). Voir mon Edit1 pour plus de détails NetResource. (J'ai dû effacer le nom du serveur, désolé.) – C4p741nZ