12 Replies Latest reply on Apr 23, 2014 6:31 AM by derniwi

    Pfad in 8.3-Darstellung

    derniwi Master
      Hallo,

      ja, ich weiß, solche Software sollte es heutzutage nicht mehr geben - kann es aber leidern icht ändern.
      Für eine Anwendung müsste ich bei der Installation den Pfad in der8.3-Darstellung angeben, da die Anwendung leider nicht mit Leerstellen im Pfad richtig umgehen kann. Das Programm an sich läuft zwar, aber der Aufruf der Hilfe scheitert an der Leerstelle in "C:\Program Files\...", da hier - wie früher üblich - keine Anführungszeichen beim Aufruf mitgegeben werden.

      Ich kann jetzt einfach "C:\Progra~1" verwenden, das würde soweit auch gehen, schöner wäre es aber (und wegen x64 auch sicherer), wenn ich den kurzen Pfad von Windows selbst ermitteln lassen würde.

      Der Umweg, der mit hier einfällt, wäre über eine cmd.exe diesen Pfad in die Registry schreibt, von wo aus ich ihn abrufe. Kennt jemand einen anderen, einfacheren Weg?

      Danke und gruß
      Nils
        • 1. Re: Pfad in 8.3-Darstellung
          ZellOr Apprentice
          Hallo derniwi,

          die "EightDotThreeFileName"-Eigenschaft in der WMI-Klasse "Win32_Directory" sollte Dir weiterhelfen. Die "WMISimpleQuery"-Funktion wird vermutlich nicht gehen, da die Klasse zuviele Instanzen hat. Ansonsten würde Ich es mit VBScript/PowerShell und der "CallScript"-Funktion versuchen.

          Grüße
          • 2. Re: Pfad in 8.3-Darstellung
            derniwi Master
            Hallo,

            naja, es ist ja durchaus mit einem Einzeiler in einem DOS-Skript möglich, den Wert in die Registry zu schreiben:
            @%SystemRoot%\System32\reg.exe add "HKLM\Software\EigeneEinstellungen" /v PfadKurz /t REG_SZ /d "%~s1" /f

            Evtl. kann ich auf die .cmd-Datei verzichten, muss ich mal probieren.

            Und im eScript kann ich den Wert dann schnell auslesen:
            ExecuteEx('".\Extern$\kurz.cmd" "%ProgramFilesDir%\Anwendung"','_RC','1')/?/TS
            RegReadValueEx('HKEY_LOCAL_MACHINE\SOFTWARE\EigeneEinstellungen','PfadKurz','PfadKurz',)
            If %PfadKurz%=''
            Set('PfadKurz','%ProgramFilesDir%\Anwendung')
            RegDeleteKey('HKEY_LOCAL_MACHINE\SOFTWARE\EigeneEinstellungen','PfadKurz',)/TS


            Wäre halt nur nett, wenn man über einen Operator den 8.3er-Pfad direkt bekäme...

            Gruß
            Nils
            • 3. Re: Pfad in 8.3-Darstellung
              _Mel_ Master
              warum "wäre" ?

              kleines escript:
              MsgBox
              _short(C:\Program Files\Internet Explorer\iexplore.exe)
              EndProc

              und schon bekommt man die folgende messagebox

              ---------------------------
              DSM Message
              ---------------------------
              C:\PROGRA~1\INTERN~1\iexplore.exe
              ---------------------------
              OK  
              ---------------------------


              ...jetzt sieht diese "_short"syntax schon wegen dem handling der klammern nicht sonderlich vertrauenserweckend aus und ich gehe mal davon aus (bzw hoffe es stark), daß das kein supportetes feature ist - aber zumindest kann man nicht sagen, daß sowas nicht drin ist
              • 4. Re: Pfad in 8.3-Darstellung
                derniwi Master
                @Mel:
                Ah ja... diese Funktion kannte ich bisher nicht. Leider finde ich da auch nichts in der Doku...

                Und die Funktion klappt bei mir auch nur beim Auto-Installer, nicht jedoch beim Service-Installer...

                Letztlich scheint das bei der Anwendung aber auch egal zu sein, denn mit dem kurzen Pfad kann DSM keinen Link erzeugen. Da bekomme ich dann eine Fehlermeldung. Das Problem bei der Anwendung scheint aber auch der eigene Pfad zu sein, denn dieser wird - soweit ich das beurteilen kann - später verwendet, um darüber die Hilfen anzuzeigen, allerdings ohne die umschließenden Anführungszeichen (somit wird dann der Adobe Reader mit
                acrord32.exe c:\program files\anwendung\hilfe\hilfe.pdf
                aufgerufen). Also werde ich diese Anwendung doch in ihren Standard-Pfad installieren müssen...

                Danke und Gruß
                Nils
                • 5. Re: Pfad in 8.3-Darstellung
                  Frank.Scholer Master
                  Hi,

                  Letztlich scheint das bei der Anwendung aber auch egal zu sein, denn mit dem kurzen Pfad kann DSM keinen Link erzeugen. Da bekomme ich dann eine Fehlermeldung.


                  @Mel: weißt du zufällig, ob das ein Bug in DSM 2013.2 ist? Hatte ich nämlich bei einem Kunden kürzlich auch, dass ein Script, was mit DSM 7.2.1 noch lief nach der Umstellung da einen Fehler geworfen hat.

                  Ich hatte vermutet, der Kunde hätte eventl. Patches installiert (oder die Server-Truppe hätte was optimiert - das Script wurde auf Terminal-Servern ausgeführt), sodass keine 8.3-Dateinamen mehr erzeugt werden (siehe z.B. http://support.microsoft.com/kb/121007/de).

                  Jetzt könnte man auf die Idee kommen, es liegt doch an DSM und ist ein Bug?

                  Vielleicht hast du ja kurz ne Idee, ob ich einen Incident aufmachen soll...

                  Danke und Grüße
                  Frank
                  • 6. Re: Pfad in 8.3-Darstellung
                    _Mel_ Master
                    es gab nen fix, daß erkannt wird, wenn windows beim link erzeugen auf die idee kommt einen anderen pfad in den link zu schreiben als angegeben.
                    evtl passiert das bei 8.3 dateinamen auch.
                    • 7. Re: Pfad in 8.3-Darstellung
                      Frank.Scholer Master
                      Einen DSM-Fix? Ist das ein Post-HF2 Patch? Weil in den Release Notes hab ich nix gelesen, dass diesbezüglich was drin ist...

                      Grüße Frank
                      • 8. Re: Pfad in 8.3-Darstellung
                        _Mel_ Master
                        2013.2 releasenotes:

                        Sometimes Windows writes a false path entry into a shortcut if the target does not exist and the CreateLink-command did not treat this as an error (RM210551)
                        • 9. Re: Pfad in 8.3-Darstellung
                          Frank.Scholer Master
                          In den DSM 2013.2 RTM Release Notes hab ich nicht geguckt... das Problem ist aber beim Kunden erst nach der Migration auf 2013.2 aufgetreten. Insofern muss das fast was anderes, aber vielleicht durchaus verwandtes, sein...

                          Das Target hat auch immer existiert, wurde aber eben nur über den 8.3 Pfad referenziert; wir haben dann im CreateLink-Befehl auf den langen Pfad umgestellt und dann hat's wieder gewuppt.

                          Naja, Workaround ist ja bekannt, daher ist das nicht besonders kritisch. Werd's aber mal versuchen, in meiner Umgebung nachzustellen und mache ggfs. einen Incident auf.

                          Grüße Frank
                          • 10. Re: Pfad in 8.3-Darstellung
                            derniwi Master
                            Merkwürdig ist das schon.
                            Bei mir hat CreateLink ja den Fehler gemeldet, obwohl der Pfad existiert. Kommt halt darauf an, wie die intern diesen Pfad prüfen, denn auf die 8.3er-Darstellung kann man ja zugriefen, nur angezeigt wird der Pfad eben so nicht.

                            Und mein System ist auf 2013.2 mit aktuellen Patches.

                            @Mel: nochmal kurz zur _short-Funktion: woher kommt die? Oder wird hier eine Windows-Funktion verwendet?
                            • 11. Re: Pfad in 8.3-Darstellung
                              _Mel_ Master
                              was für eine fehlermeldung kommt denn ?
                              wenn es das "windows schreibt was anderes rein als verlangt wurde"-problem ist, dann sollte im logfile da stehen

                              Failed to write target 'xyz' to linkfile 'abc' ! The path was changed to 'uvw'

                              kurze dateinamen werden mit [URL="http://msdn.microsoft.com/en-us/library/windows/desktop/aa364989(v=vs.85).aspx"]GetShortPathName ermittelt.

                              eines der probleme bei dieser _short-funktion ist, daß sie nach ) sucht um das ende des dateinamens zu suchen - und ) ist ein zulässiges zeichen in dateinamen...
                              da werden zwar ( ) paare übersprungen, aber das funktioniert halt nicht, wenn ich ein verzeichnis mit namen "tie fighter )o(" habe, oder smileys in den namen drin sind... ";-)" ist ein zulässiger dateiname
                              • 12. Re: Pfad in 8.3-Darstellung
                                derniwi Master
                                Das Log habe ich nicht mehr. Aber ich meine mich zu erinnern, dass da sinngemäß drinstand, der Pfad würde nicht exisitieren... und dann hat er die Lang-Version dieses Pfades eingetragen...