Loginabfrage bei Zugriff auf freigegebenen Ordner im Netzwerk



  • Hallo Leute!

    Ich möchte gern eine Datei im NEtzwerk hinterlegen bzw. schreiben. Nun funktioniert das soweit recht gut, es gibt nur eine unschöne Sache. Wenn ich die erste Datei schreibe, d.h. den ersten Zugriff auf einen freigegebenen Ordner im Netzwerk durchführe fragt mich das System nach eienm Loginname und einem Passwort. Ich möchte dieses auch nicht auf dem System speichern. Kann ich das verhindern, indem ich beim Zugriff gleich Login + PW beifüge. Im Moment wird alles über CFile gemacht.

    Viele Grüße,

    Ranger


  • Mod

    Ich würde mal WNetAddConnection2 versuchen.

    http://msdn2.microsoft.com/en-us/library/aa385413(VS.85).aspx



  • Danke!

    Ich habe mir das angesehen und bemerkt, dass die unktion:

    DWORD WNetAddConnection(...)
    

    eigentlich ausreichend ist. Leider hab ich ein kleines Problem. Ich wollte das ganze auf MinCE übertragen und da bekomme ich ein merkwürdiges Verhalten. Innerhalb des Editors kann ich mit der MAus über den NAmen gehen und er zeigt die Funktionsdekleration in einem Ballontip an (wie gewohnt). Schreibe ich die Funktion allerdings hin mit den Parametern und lasse ihn anschließend kompilieren sagt er "nicht deklariert". Die Header Datei ist aber eingefügt. Er scheint die Funktion und ihre Nutzung ja auch zu kennen, sonst gäbe es keinen Ballontip.

    #include "Winnetwk.h"
    
    WNetAddConnection("\\\\Rechner1\\Temp","test","Anwender1");
    WNetAddConnection("\\\\Rechner1\\Temp","test","Anwender2");
    WNetAddConnection("\\\\Rechner1\\Temp","test","Anwender3");
    

    Viele Grüße,

    Ranger


  • Mod

    1.

    Note This function is provided only for compatibility with 16-bit versions of Windows. Other Windows-based applications should call the WNetAddConnection2 or the WNetAddConnection3 function.

    2. Aktuelle CE Doku lesen: Da gibt es nur noch WNetAddConnection3!
    http://msdn2.microsoft.com/en-us/library/aa917445.aspx



  • MSDN schrieb:

    Header Declared in Winnetwk.h.

    Library Use Mpr.lib.

    DLL Requires Mpr.dll.

    Hast du vielleicht vergessen die lib einzubinden? Die Ballontips holt er sich doch aus der Header-Datei...



  • Wer lesen kann is klar im Vorteil, ich habs überlesen. Habs umgestellt, es bleibt aber komisch. die Fehler bleiben, trotz richtigem include.

    NETRESOURCE nr;
    //nr zuweisen ...
    WNetAddConnection3(this->m_hWnd,&nr,L"pw001",L"Anwender1",0);
    

    "NETRESOURCE undeclared Identifier"
    "WNetAddConnection3 undeclared Identifier"

    Der Include der HeaderDatei bringt keine Fehler, also gehe ich davon aus, dass das passt, aber irgendwie mag er da was nicht.
    Ich habe extra nochmal in die Header reingesehen, es steht "NETRESOURCE" drin.

    Grüße,

    Ranger


  • Mod

    Wird wirklich windows.h included?



  • Jupp, folgende Includes habe ich drin:

    #include "stdafx.h"
    #include "windows.h"
    #include "winnetwk.h" //diese hier steht als Notwendig bei der Funktion in der MSDN
    

    Ich hab auch schon in letzterer nachgeschaut, die "NETRESOURCE" steht da auch definitiv drin.

    Ganz komisch, ich weis nicht warum er die Funktion im Ballon Tip korrekt anzeigt, beim compilieren aber sagt es gäbe sie nicht bzw. sie ist unbekannt.

    Viele Grüße,

    Ranger



  • Und hast du die Mpr.lib mit eingebunden? Die Deklarationen findet er in der Headerdatei, deshalb kommt der Fehler erst beim Compilieren...
    Das gleiche Problem hatte ich mit timeGetTime(). Nach dem includen der Mmsystem.h kannte er das auch und der Fehler kam beim compilieren. Erst nachdem ich die Winmm.lib eingebunden hatte funktionierte es...



  • Hallo LEute, habe den Fehler bzw. dessen Behebung in einem Forum der MSDN gefunden. Keiner weiß warum, aber folgende ZEile direkt vor de include bringt den Erfolg:

    #undef _WINNETWK_ 
    #include "winnetwk.h"
    

    Man ist sich nicht einig, warum das so ist, aber es behebt den Fehler.

    Viele Grüße,

    Ranger


  • Mod

    Das darf nicht sein. Dann hast Du irgendeinen andren Quatsch in Deinem Projekt. Diese Include Datei wird automatisch immer verwendet wenn windows.h included wird.



  • Das verstehe ich auch nicht. Fakt ist, nach der einen Zeile funktioniert das ganze wunderbar, zumindest nach Außen. Ich habe mir das nicht aus den Fingern gesaugt.

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=670101&SiteID=1

    Wenn jemand eine Erklärung hat, wieso in einem leeren Projekt (alles was eVC++ erstellt hat is drin) dieser Fehler auftritt, der sich dann so beheben lässt, dann bitte her.
    Das Projekt war ganz frisch, ich habe die "winnetwk.h" eingebunden wie es in der MSDN stand, danach habe ich versucht dem Beispiel zu folgen, nur "windows.h" einzubinden, beides ohne Erfolg. Das Project war leer, die einzige Funktion, die es hatte war die OnInitDialog().
    Soviel zu Thema ich hab selbst Mist verstellt. Sowas wird immer erst in einem kleinen Testprogramm ohne viel drumrum getestet, bevor es in irgendeine Applikation kommt, so auch hier.

    Ich kann ja mal versuchen dem Vorschlag aus obigem Link folgend, den processor Output einzuschalten und da mal zu sehen wieso man das erst unbekannt machen muss und hinterher includieren.

    Viele Grüße,

    Ranger


Log in to reply