Accédez en toute sécurité aux fichiers distants à l'aide de l'API WNetUseConnection
Contrairement au mappage de lecteur traditionnel ou aux méthodes qui exploitent l'usurpation d'identité au niveau du domaine, l'API WNetUseConnection fournit une méthode plus sécurisée pour accéder aux partages de fichiers distants dans des domaines non approuvés.
Utiliser WNetUseConnection
Pour établir une connexion sans mapper le lecteur, appelez WNetUseConnection avec les paramètres suivants :
hwndOwner
: handle inutilisé de la fenêtre parent, ou défini sur IntPtr.Zero
. lpNetResource
: utilisez la structure NETRESOURCE
pour spécifier les ressources du serveur et du disque distant. lpPassword
: Mot de passe requis pour l'authentification à distance. lpUserID
: Le nom du compte utilisateur autorisé à accéder au partage distant. dwFlags
: utilisez 0 pour le paramètre par défaut. lpAccessName
: Utilisez une chaîne nulle ou vide car cette opération n'a rien à voir avec cela. lpBufferSize
: défini sur null car la taille du tampon n'est pas requise. lpResult
: valeur de retour inutilisée ; définie sur null. Exemple de code
Le code suivant montre comment utiliser WNetUseConnection pour se connecter à un chemin UNC sans mapper un lecteur réseau :
// 连接到UNC路径,无需映射驱动器 using System.Runtime.InteropServices; namespace RemoteFileAccess { class Program { [DllImport("Mpr.dll")] private static extern int WNetUseConnection(IntPtr hwndOwner, NETRESOURCE lpNetResource, string lpPassword, string lpUserID, int dwFlags, string lpAccessName, string lpBufferSize, string lpResult); [StructLayout(LayoutKind.Sequential)] private struct NETRESOURCE { public int dwScope; public int dwType; public int dwDisplayType; public int dwUsage; public string lpLocalName; public string lpRemoteName; public string lpComment; public string lpProvider; } static void Main(string[] args) { // 提供凭据和远程UNC路径 string remoteUNC = @"\server\share"; string username = "username"; string password = "password"; // 初始化NETRESOURCE结构 NETRESOURCE nr = new NETRESOURCE(); nr.dwType = 1; // RESOURCETYPE_DISK nr.lpRemoteName = remoteUNC; // 建立连接,无需映射驱动器 int result = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, null, null, null); // 检查错误 if (result == 0) { // 连接已建立 Console.WriteLine("已连接到远程文件共享。"); } else { // 发生错误 Console.WriteLine($"错误:{result}"); } } } }
Ce code montre comment se connecter en toute sécurité à un partage de fichiers distant sans créer de mappage de lecteur réseau persistant, améliorant ainsi la sécurité et simplifiant le processus d'accès aux fichiers. N'oubliez pas de remplacer \servershare
, username
et password
dans l'exemple de code par vos valeurs réelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!