Sicherer Zugriff auf Remote-Dateien mithilfe der WNetUseConnection-API
Im Gegensatz zu herkömmlichen Laufwerkszuordnungen oder Methoden, die Identitätswechsel auf Domänenebene nutzen, bietet die WNetUseConnection-API eine sicherere Methode für den Zugriff auf Remote-Dateifreigaben in nicht vertrauenswürdigen Domänen.
WNetUseConnection verwenden
Um eine Verbindung ohne Zuordnung des Laufwerks herzustellen, rufen Sie WNetUseConnection mit den folgenden Parametern auf:
hwndOwner
: Unbenutztes Handle für das übergeordnete Fenster oder auf IntPtr.Zero
gesetzt. lpNetResource
: Verwenden Sie die Struktur NETRESOURCE
, um Remote-Server- und Festplattenressourcen anzugeben. lpPassword
: Passwort für die Remote-Authentifizierung erforderlich. lpUserID
: Der Name des Benutzerkontos mit der Berechtigung zum Zugriff auf die Remote-Freigabe. dwFlags
: Verwenden Sie 0 als Standardeinstellung. lpAccessName
: Verwenden Sie Null oder eine leere Zeichenfolge, da dieser Vorgang nichts damit zu tun hat. lpBufferSize
: Auf null gesetzt, da keine Puffergröße erforderlich ist. lpResult
: Unbenutzter Rückgabewert; auf Null gesetzt. Beispielcode
Der folgende Code zeigt, wie Sie mit WNetUseConnection eine Verbindung zu einem UNC-Pfad herstellen, ohne ein Netzlaufwerk zuzuordnen:
<code class="language-csharp">// 连接到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}"); } } } }</code>
Dieser Code zeigt, wie Sie eine sichere Verbindung zu einer Remote-Dateifreigabe herstellen, ohne eine dauerhafte Netzwerklaufwerkszuordnung zu erstellen, wodurch die Sicherheit erhöht und der Dateizugriffsprozess vereinfacht wird. Denken Sie daran, \servershare
, username
und password
im Beispielcode durch Ihre tatsächlichen Werte zu ersetzen.
Das obige ist der detaillierte Inhalt vonWie kann WNetUSeConnection ohne Antriebskartierung sicher auf Remote -Dateien zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!