Verknüpfung einer Datei



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ich kann dir deine frage leider nicht beantworten, da ich selber erst seit ein einhalb jahren programmiere (ich erlerne es an der HTBL Pinkafel in Österreich).

    aber vieleicht kannst du mir eine frage beantworten 🙂

    wie ich vorher gepostet habe, verlangt die funktion einen LPTSTR. doch ich programmiere mit Visual Studio 2008 und dieser gibt mir einen fehler aus. und zwar

    'CreateSymbolicLinkW' : cannot convert parameter 1 from 'char [26]' to 'LPCWSTR'

    aber verlangt ist doch LPTSTR, wieso will der jetzt in LPCWSTR umwandeln?

    Beispiel:

    int main(){
    
       char pfad[MAX_DAT][MAX_LET]={
                                     {"C:/BC5"},
                                     {"C:/Users/ITEDVO/Desktop/"}
                                   };
    
       CreateSymbolicLink(pfad[0],pfad[1],0x1);
    
       return 0;
    

    Oder mach ich in diesem beispiel (bis auf die tatsache das ich den Pfad nicht einlese, was ja absicht ist weil es ja nur ein beispiel ist xD) etwas falsch?

    wäre für hilfe sehr dankbar!

    gruß
    ITEDVO



  • Du mußt Dein Projekt von UNICODE auf MBCS umstellen.



  • hmm, was ähnliches hat der prof. auch vorgeschlagen, doch ist die (bzw. meine) frage: wo? hab jetzt mal 20 min lang ungefär alle projekt-einstellungen durchsucht, aber ohne erfolg. wo kann ich das umstellen?



  • Project|Properties|Configuration Properties|General|Character Set: Use Multi-Byte Character Set



  • danke... jetzt gehts...

    mir ist jedoch noch eine funktion aufgefallen, doch ist mein englisch anscheinend nicht gut genug um zu verstehen was der sinn der folgenden funktion ist.

    BOOL WINAPI CreateHardLink(
      __in        LPCTSTR lpFileName,
      __in        LPCTSTR lpExistingFileName,
      __reserved  LPSECURITY_ATTRIBUTES lpSecurityAttributes
    );
    

    http://msdn.microsoft.com/en-us/library/aa363860(v=VS.85).aspx

    könnte mir jemand erklären was diese funktion jetzt wirklich macht? irgendwie steh ich auf der leitung.

    gruß
    ITEDVO



  • HardLink: Im Dateisystem wird einfach nur ein Zeiger auf den Inhalt der Datei gesetzt! Das löschen der ursprünglichen Datei löscht nicht den Inhalt, da ja noch ein weiterer Name auf den Inhalt zeigt.

    SymLink: Wird die ursprungsdatei gelöscht, so ist der Inhalt weg und der SymLink geht ins Leere.



  • ah, gut zu wissen. aber ich hab nun ein problem!

    wenn ich schreibe:

    int main(){
    
      char dat[MAX_FILES][MAX_LETTER]{
                                       {"C:/BCW/BIN/BCW.exe"},
                                       {"C:/Users/ITEDVO/Desktop/bcw.exe"}
                                     };
    
      CreateSymbolicLink(dat[1],dat[2],0x0);
      return 0;
    }
    

    jetzt lässt sich aber die verknüpfung nicht ausführen. bei directories gehts jedoch!

    was mach ich falsch?



  • Kannst DU uns mitteilen was DU mit "nicht ausführen" meinst? AUch wäre es gut wenn Du sowohl die Rückgabewerte prüfen würdest als auch Backslashes verwenden könntest...



  • Es wird folgende Fehlermeldung beim Ausführen der Verknüpfung (doppelklick auf die verknüpfung) ausgegeben:

    C:\Users\ITEDVO\Desktop\BCW.exe
    Der angegebene Pfad ist nicht vorhanden.

    Überprüfen Sie die Pfadangabe, und wiederholen Sie den Vorgang.

    wie kann man ein bild hier im forum einfügen? weil dann kann ich euch ein paar
    screenshots bezüglich dem problem senden.

    gruß
    ITEDVO



  • Nun, die Fehlermeldung ist ganz klar zu verstehen.

    Es gibt diesen Pfad nicht!
    Oder diesen Dateinamen gibts in diesem Pfad nicht!

    Prüfe mal mit dem Explorer (oder Total Commander, ... ) ob Du überhaupt auf diesen Pfad zugreifen kannst!

    Vielleicht gibt es auch ein Problem mit den User-Rechten?
    Dann kann es durchaus passieren, daß der User keine Leserechte für diesen Ordner hat?

    HTH,
    Martin



  • ich teste diese funktion auf meine arbeitslaptop mit adminrechten.
    der pfad existiert und zugriffsrechte hab ich.


Anmelden zum Antworten