Entwickler-Ecke
Netzwerk - Dateizugriff auf externen Rechner
yndaso - Mo 11.07.11 09:57
Titel: Dateizugriff auf externen Rechner
Hallo,
habe ein kleines Problem mit dem Zugriff auf eine Datei.
Und zwar liegt auf einem externen Rechner eine xml Datei ab, die ich in meiner lokalen Anwendung einlese will.
C#-Quelltext
1:
| DataSet ds = readXml(@"\\192.168.0.64\XML_Files\config.xml"); |
Es klappt nicht die Datei einzulesen, da der PC Benutzernamen und Kennwort braucht.
Greife ich einmalig manuell auf die Datei zu, so erscheint ein Anmeldebildschirm.
Nach erfolgreichem Einloggen, funktioniert dann auch der Zugriff aus meiner Anwendung heraus.
Nun meine Frage, wie kann ich das einloggen in meine Anwendung integrieren?
Danke
yndaso - Mo 11.07.11 10:18
Danke für die schnelle Antwort. Aber verstehen tu ich dies nicht 100 pro.
Ich habe auf dem entfernten pc vollzugriff und habe dort eine ganz normale datenfreigabe auf den Ordner eingerichtet.
Wie würde das in diesem Fall funktionieren? Nzw. welche Methoden wären die geeigneten?
Ralf Jansen - Mo 11.07.11 10:52
Wenn 'ich habe' bedeutet das der User mit dem du angemeldet bist auf dem anderen Rechner auch existiert und irgendwelche Rechte hat gibt es noch ein paar andere Lösungen. Ansonsten ist WNetAddConnection die einzige Methode die ich kenne(heißt es mag durchaus auch andere geben) die es zulässt über einen reinen Remote User auf einen Remote Share zuzugreifen. Das erstellte Laufwerksmapping kannnst du ja im Anschluss wieder löschen.
yndaso - Mo 11.07.11 12:52
Ich weiß ja, dass es nicht der Sinn eines Forums ist fertige Lösungen zu präsentieren.
Aber ich komme mit der msdn Beschreibung WNETAddConnection2 nicht mal ansatzweise zurecht.
Die google suche nach Beispielen ist ebenso bis jetzt von erfolglosigkeit geprägt.
Kann mir evtl. mal jemand das genauer erklären, bzw. ein leicht verständlicheres beispiel
zeigen?
yndaso - Mo 11.07.11 13:16
Kurzes Update.
Ich habe es nun mittels einem Beispiel geschafft das Laufwerk zu mappen.
C#-Quelltext
1: 2: 3: 4: 5:
| NETRESOURCE myNetResource = new NETRESOURCE(); myNetResource.lpLocalName = drive; myNetResource.lpRemoteName = unc; myNetResource.lpProvider = null; int result = WNetAddConnection2(myNetResource, password, user, 0); |
Wie würde man dieses gemappte laufwerk wieder entfernen?
Ralf Jansen - Mo 11.07.11 13:50
NetUseAdd ist ein guter Hinweis. Es scheint so das man auf die Angabe des lokalen Laufwerks auf das gemappt wird verzichten kann. Einfach im USE_INFO_2 struct ui2_local auf Null belassen. Dann hat man eine reine Authentifizierung und man erübrigt sich das spätere Entfernen des Mappings.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!