Announcement

Collapse
No announcement yet.

Problem: Shell Link über Rechnergrenze erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem: Shell Link über Rechnergrenze erzeugen

    Hallo Leute,

    ich habe versucht mit IShellLink, wie hier oft schon besprochen,<br>
    eine Verknüpfung mit meinem NT Rechner auf einem anderen im Netz zu<br> erstellen. Dabei soll das Ziel der Verknüpfung eine Datei des Anderen<br> Rechners sein.

    Gebe ich beim Ziel einen Pfad an wie C:\Test\a.exe an und betrachte mir<br>
    das Ergebnis dort mit Eigenschaften, sieht alles gut aus. Beim click<br>
    aber wird versucht sich mit \\MeinRechner\c$ zu verbinden.<br>

    Gebe ich das Ziel mit \\AndererRechner\C:\... an,<br>
    wird das Ziel nicht gefunden. \\AndererRechner\C$\... klappt nur bei<br>
    Admins. Das ist wohl für Profiles\AllUsers\Desktop nicht wirklich<br> sinnvoll.

    Auch mit dem Windowsexplorer und einer Verbindung mit \\AndererRechner\c$<br>
    manuell durchgeführt, klappt es nicht.

    Gibt es da noch irgendwelche Kniffe, die ich vergessen habe?<br>
    Oder hat jemand dafür eine Lösung?<br>

    Vielen Dank für die Mühe<br>
    Bertin

  • #2
    Ich glaube das geht nicht so einfach. Man müsste die .LNK Datei schon selber binär ansprechen. Der Grund ist eigentlich auch logisch. Ich betrachte MEIN Desktop als meinen Schreibtisch und werde eigentlich ziemlich sauer falls irgend-WAS da Links anlegt/löscht oder sonstwas verändert. Es ist also schon ein Sicherheitsfaktor das man nicht so einfach die Konfiguration anderer Rechner oder Nutzer ändern kann.

    Gruß Hage

    Comment


    • #3
      Moin Bertin,<br>
      <br>
      wenn Du bei IShellLink.SetPath einen UNC Pfad angibst, müsste das aber funktionieren, spätestens dann, wenn die Freigabe mit einem Laufwerksbuchstaben verbunden wurde.<br>
      Der Pfad setzt sich dann zusammen aus:<br>
      \\Rechnername\Freigabename\ggf.sonstiger Pfad\Dateiname<br>
      <br>
      Um diese Verknüpfung zu erhalten brauchst Du natürlich auch die Rechte Dir den Share zu verbinden. Das es die Freigabe gibt, heisst ja noch lange nicht, dass Du auch Rechte darauf hast.<br>
      C$, D$ usw. sowie ADMIN$ (= NT Verzeichnis) sind standardmässig die adminstrativen Freigaben auf NT Rechnern, und somit ist es nur logisch, dass sich nur jemand, der auf dem anderen Rechner zumindest Local Admin ist auf diese zugreifen darf.<br>
      Hast Du aber das Recht, müsste die Verknüpfung in jedem Falle funktionieren.<br>
      Was Du bei Deinem ersten Beispiel (C:\Test\a.exe) angegeben hast würde mich wirklich mal interessieren, denn dass dabei ein versucht werden soll über den UNC Pfad zuzugreifen, kommt mir seltsam vor.<br>
      <br>
      Ciao<br>
      Chri

      Comment


      • #4
        Hallo,

        ich habe mich auf den Rat von Hagen mit dem Binärformat der Datei beschäftigt.<br>
        Dazu habe ich eine Verknüpfung auf dem Desktop erstellt.<br>
        Rechte Maustaste, Neu->Verknüpfung, Durchsuchen und den Pfad C:\Temp\TPProj.exe gewählt.<br>
        Wenn ich nun davon einen Dump mache lautet dieser:

        <B><small><pre>
        0000: 4C 00 00 00 01 14 02 00 - 00 00 00 00 C0 00 00 00 - L...........À...
        0010: 00 00 00 46 9B 00 00 00 - 20 00 00 00 30 FD B3 0D - ...F›... ...0ý³.
        0020: 6E 7E C1 01 80 CD E4 E6 - 23 7F C1 01 80 CD E4 E6 - n~Á.€Íäæ#Á.€Íäæ
        0030: 23 7F C1 01 00 92 0C 00 - 00 00 00 00 01 00 00 00 - #Á..’..........
        0040: 00 00 00 00 00 00 00 00 - 00 00 00 00 5D 00 14 00 - ............]...
        0050: 1F 00 E0 4F D0 20 EA 3A - 69 10 A2 D8 08 00 2B 30 - ..àOÐ ê:i.¢Ø..+0
        0060: 30 9D 19 00 23 43 3A 5C - 00 00 00 00 00 00 00 00 - 0..#C:\........
        0070: 00 00 00 00 00 00 00 00 - 00 11 EE 14 00 31 00 00 - ..........î..1..
        0080: 00 00 00 53 2C 17 66 30 - 80 54 65 6D 70 00 00 1A - ...S,.f0€Temp...
        0090: 00 32 00 00 92 0C 00 87 - 2B 50 6C 20 00 54 50 50 - .2..’..‡+Pl .TPP
        00A0: 72 6F 6A 2E 65 78 65 00 - 00 00 00 69 00 00 00 1C - roj.exe....i....
        00B0: 00 00 00 03 00 00 00 1C - 00 00 00 2D 00 00 00 38 - ...........-...8
        00C0: 00 00 00 5E 00 00 00 11 - 00 00 00 03 00 00 00 83 - ...^...........ƒ
        00D0: 90 D1 18 10 00 00 00 00 - 43 3A 5C 54 45 4D 50 5C - Ñ......C:\TEMP\
        00E0: 00 00 00 26 00 00 00 02 - 00 00 00 14 00 00 00 00 - ...&............
        00F0: 00 00 00 00 00 02 00 5C - 5C 49 50 4D 44 5F 53 49 - .......\\IPMD_SI
        0100: 47 4D 41 5C 54 45 4D 50 - 00 54 50 50 72 6F 6A 2E - GMA\TEMP.TPProj.
        0110: 65 78 65 00 1B 00 2E 00 - 2E 00 5C 00 2E 00 2E 00 - exe.......\.....
        0120: 5C 00 2E 00 2E 00 5C 00 - 2E 00 2E 00 5C 00 54 00 - \.....\.....\.T.
        0130: 45 00 4D 00 50 00 5C 00 - 54 00 50 00 50 00 72 00 - E.M.P.\.T.P.P.r.
        0140: 6F 00 6A 00 2E 00 65 00 - 78 00 65 00 07 00 43 00 - o.j...e.x.e...C.
        0150: 3A 00 5C 00 54 00 45 00 - 4D 00 50 00 :.\.T.E.M.P.
        </pre></small></B>

        Interessant ist der Eintrag ab F7 \\IPMD_SIGMA\TEMP. Das ist mein Rechner plus Pfad<br>
        und dabei ist der Ordner C:\Temp freigegen. Wiederhole ich dies mit dem Notepad<br>
        bekomme ich ein Anderes Ergebnis. Beide Tests habe ich lokal durchgeführt also<br>
        von meinem Rechner aus auf meinem Rechner!

        <small><B><pre>
        0000: 4C 00 00 00 01 14 02 00 - 00 00 00 00 C0 00 00 00 - L...........À...
        0010: 00 00 00 46 9B 00 00 00 - 20 00 00 00 00 40 33 B5 - ...F›... ....@3µ
        0020: 85 85 BB 01 20 03 75 A2 - 91 72 C1 01 00 40 33 B5 - ……». .u¢‘rÁ..@3µ
        0030: 85 85 BB 01 10 B5 00 00 - 00 00 00 00 01 00 00 00 - ……»..µ..........
        0040: 00 00 00 00 00 00 00 00 - 00 00 00 00 5F 00 14 00 - ............_...
        0050: 1F 00 E0 4F D0 20 EA 3A - 69 10 A2 D8 08 00 2B 30 - ..àOÐ ê:i.¢Ø..+0
        0060: 30 9D 19 00 23 43 3A 5C - 00 00 00 00 00 00 00 00 - 0..#C:\........
        0070: 00 00 00 00 00 00 00 00 - 00 11 EE 15 00 31 00 00 - ..........î..1..
        0080: 00 00 00 53 2C 45 65 10 - 80 57 69 6E 6E 74 00 00 - ...S,Ee.€Winnt..
        0090: 1B 00 32 00 10 B5 00 00 - 09 21 00 00 20 80 4E 6F - ..2..µ...!.. €No
        00A0: 74 65 70 61 64 2E 65 78 - 65 00 00 00 00 6A 00 00 - tepad.exe....j..
        00B0: 00 1C 00 00 00 03 00 00 - 00 1C 00 00 00 2D 00 00 - .............-..
        00C0: 00 34 00 00 00 58 00 00 - 00 11 00 00 00 03 00 00 - .4...X..........
        00D0: 00 83 90 D1 18 10 00 00 - 00 00 43 3A 5C 00 00 00 - .Ą......C:\...
        00E0: 00 24 00 00 00 02 00 00 - 00 14 00 00 00 00 00 00 - .$..............
        00F0: 00 00 00 02 00 5C 5C 49 - 50 4D 44 5F 53 49 47 4D - .....\\IPMD_SIGM
        0100: 41 5C 43 24 00 57 49 4E - 4E 54 5C 4E 4F 54 45 50 - A\C$.WINNT\NOTEP
        0110: 41 44 2E 45 58 45 00 14 - 00 2E 00 2E 00 5C 00 2E - AD.EXE.......\..
        0120: 00 2E 00 5C 00 2E 00 2E - 00 5C 00 4E 00 4F 00 54 - ...\.....\.N.O.T
        0130: 00 45 00 50 00 41 00 44 - 00 2E 00 45 00 58 00 45 - .E.P.A.D...E.X.E
        0140: 00 08 00 43 00 3A 00 5C - 00 57 00 49 00 4E 00 4E - ...C.

        Comment


        • #5
          Hallo,

          ich habe mich auf den Rat von Hagen mit dem Binärformat der Datei beschäftigt.<br>
          Dazu habe ich eine Verknüpfung auf dem Desktop erstellt.<br>
          Rechte Maustaste, Neu->Verknüpfung, Durchsuchen und den Pfad C:\Temp\TPProj.exe gewählt.<br>
          Wenn ich nun davon einen Dump mache lautet dieser:

          <pre>
          0000: 4C 00 00 00 01 14 02 00 - 00 00 00 00 C0 00 00 00 - L...........À...
          0010: 00 00 00 46 9B 00 00 00 - 20 00 00 00 30 FD B3 0D - ...F›... ...0ý³.
          0020: 6E 7E C1 01 80 CD E4 E6 - 23 7F C1 01 80 CD E4 E6 - n~Á.€Íäæ#Á.€Íäæ
          0030: 23 7F C1 01 00 92 0C 00 - 00 00 00 00 01 00 00 00 - #Á..’..........
          0040: 00 00 00 00 00 00 00 00 - 00 00 00 00 5D 00 14 00 - ............]...
          0050: 1F 00 E0 4F D0 20 EA 3A - 69 10 A2 D8 08 00 2B 30 - ..àOÐ ê:i.¢Ø..+0
          0060: 30 9D 19 00 23 43 3A 5C - 00 00 00 00 00 00 00 00 - 0..#C:\........
          0070: 00 00 00 00 00 00 00 00 - 00 11 EE 14 00 31 00 00 - ..........î..1..
          0080: 00 00 00 53 2C 17 66 30 - 80 54 65 6D 70 00 00 1A - ...S,.f0€Temp...
          0090: 00 32 00 00 92 0C 00 87 - 2B 50 6C 20 00 54 50 50 - .2..’..‡+Pl .TPP
          00A0: 72 6F 6A 2E 65 78 65 00 - 00 00 00 69 00 00 00 1C - roj.exe....i....
          00B0: 00 00 00 03 00 00 00 1C - 00 00 00 2D 00 00 00 38 - ...........-...8
          00C0: 00 00 00 5E 00 00 00 11 - 00 00 00 03 00 00 00 83 - ...^...........ƒ
          00D0: 90 D1 18 10 00 00 00 00 - 43 3A 5C 54 45 4D 50 5C - Ñ......C:\TEMP\
          00E0: 00 00 00 26 00 00 00 02 - 00 00 00 14 00 00 00 00 - ...&............
          00F0: 00 00 00 00 00 02 00 5C - 5C 49 50 4D 44 5F 53 49 - .......\\IPMD_SI
          0100: 47 4D 41 5C 54 45 4D 50 - 00 54 50 50 72 6F 6A 2E - GMA\TEMP.TPProj.
          0110: 65 78 65 00 1B 00 2E 00 - 2E 00 5C 00 2E 00 2E 00 - exe.......\.....
          0120: 5C 00 2E 00 2E 00 5C 00 - 2E 00 2E 00 5C 00 54 00 - \.....\.....\.T.
          0130: 45 00 4D 00 50 00 5C 00 - 54 00 50 00 50 00 72 00 - E.M.P.\.T.P.P.r.
          0140: 6F 00 6A 00 2E 00 65 00 - 78 00 65 00 07 00 43 00 - o.j...e.x.e...C.
          0150: 3A 00 5C 00 54 00 45 00 - 4D 00 50 00 :.\.T.E.M.P.
          </pre>

          Interessant ist der Eintrag ab F7 \\IPMD_SIGMA\TEMP. Das ist mein Rechner plus Pfad<br>
          und dabei ist der Ordner C:\Temp freigegen. Wiederhole ich dies mit dem Notepad<br>
          bekomme ich ein Anderes Ergebnis. Beide Tests habe ich lokal durchgeführt also<br>
          von meinem Rechner aus auf meinem Rechner!

          <pre>
          ...
          00F0: 00 00 00 02 00 5C 5C 49 - 50 4D 44 5F 53 49 47 4D - .....\\IPMD_SIGM
          0100: 41 5C 43 24 00 57 49 4E - 4E 54 5C 4E 4F 54 45 50 - A\C$.WINNT\NOTEP
          0110: 41 44 2E 45 58 45 00 14 - 00 2E 00 2E 00 5C 00 2E - AD.EXE.......\..
          ...
          </PRE>

          Nun ab F5 der Pfad \\IPMD_SIGMA\C$. Der Adminconnect zu MEINEM Rechner.<br>
          Dies passiert dann wohl auch, wenn ich Links auf anderen Rechnern erstelle.<br>
          Was soll das! Ich habe keine Methode im IShellLink-Interface gefunden um<br>
          Rechnernamen einzutragen oder zu ändern. Was soll ich denn nun machen?

          <p>Vielen Dank für eure Mühe<br>
          Bertin

          <p>PS: Ich hab auch herausgefunden, das ab 4E der Pfad als ItemIDList in binär steht.<br>
          Länge eines Abschnitts (lo, hi) Abschnitt ... (0,0). Der erste Eintrag ist<br>
          Arbeitsplatz.

          Comment


          • #6
            das IShellLink Interface versucht anscheinend immer auf den lokalen Rechner zu mappen. Es gibt nun 3 Möglichkeiten
            <li>irgend eine API Funktion wird es unterstützen, also suchen
            <li>das LNK Format selber entschlüsseln und dann ändern
            <li>ein Server-Object per COM auf dem Zielrechner installieren das dann den gewünschten Link anlegt

            Alle 3 Möglichkeiten sind nicht besonders attraktiv.

            gruß Hage

            Comment


            • #7
              Moin Zusammen,<br>
              <br>
              eine Beschreibung des Formates von LNK Dateien gab es mal auf www.wotsit.org. Ob dieses inzwischen noch verfügbar ist, bzw. aktualisiert wurde, weiss ich allerdings nicht.<br>
              Ich vermute mal, dass diese Aufschlüsselung nach \\Rechnername\Share\Pfad\Datei etwas mit der Einbindung in's Active Directory zu tun hat. Meines Wissens stand das vorher nicht so drin

              Comment


              • #8
                <p><BIG><B>Ich bin schon fast am Ziel.</B></BIG>

                <p align="align">
                Christians Tipp mit der Seite www.wotsit.org förderte eine gute
                Doku zu den LNK-Dateien zutage. Sie ist wahrscheinlich nicht mehr so aktuell, und auch ist das Format
                der Linkdateien recht kompliziert. Es gibt da so etwas wie ein Datadirectory, das gepflegt werden will.
                Damit könnte ich zur Not schon etwas anfangen.

                <p align="align">Eine weitergehende Suche brachte mich bei MSDN zu der Doku des <B>IShellLinkDataList</B>-Interface.
                Dieses ist eine Ergänzung zum IShellLink-Interface und ermöglicht das Hinzufügen und Entfernen
                von Datenblöcken in der Linkdatei.
                Doku bei MSDN http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/ishelllinkdatalist/ishelllinkdatalist.asp

                <p align="align">Leider kann ich dieses Interface noch nicht benutzen. Mir fehlt z.B. die ClassID und die Interfacedefinition
                für Delphi. Ich weiß dann auch noch nicht, wie ich IShellLink, IShellLinkDataList und IPersistFile richtig
                zusammen spielen lasse.

                <p align="align">Jedenfalls nochmal vielen Dank für Eure Hilfe

                <p>Mit freundlichen Grüßen
                <p>Bertin
                &#10

                Comment


                • #9
                  Moin Bertin,<br>
                  <br>
                  die CLSID steht in der SHLGUID.H<br>
                  DEFINE_GUID(IID_IShellLinkDataList, 0x45e2b4ae, 0xb1c3, 0x11d0, 0xb9, 0x2f, 0x0, 0xa0, 0xc9, 0x3, 0x12, 0xe1);<br>
                  <br>
                  Ciao<br>
                  Chri

                  Comment

                  Working...
                  X