Romero: Zugriff auf den Temp-Ordner für jeden Nutzer

Hallöchen an euch,

ich habe folgende Frage:

Wie kann ich auf den Temp-Ordner des jeweiligen Nutzers zugreifen?

Was ich möchte ist, dass die Nutzer ein von mit erstelles Script (*.hta) nutzen, wo sie dann (durch das Script) auf ihren eigenen lokalen Temp-Ordner zugreifen.

Unter der Eingabeaufforderung kann man unter "set" folgende Variablen finden:

TEMP = c:\DOCUM...\USER\LOCALS...\TEMP

Wie kann ich diesen Ordner für jeden Nutzer ansprechen? Oder wie kann ich gleich diese "TEMP" nutzen?

LG Romero

  1. Oder wie kann ich gleich diese "TEMP" nutzen?

    http://msdn.microsoft.com/en-us/library/6s7w15a0%28v=vs.84%29.aspx

  2. Hallo,

    Unter der Eingabeaufforderung kann man unter "set" folgende Variablen finden:

    TEMP = c:\DOCUM...\USER\LOCALS...\TEMP

    Wie kann ich diesen Ordner für jeden Nutzer ansprechen? Oder wie kann ich gleich diese "TEMP" nutzen?

    in der DOS/Windows-Shell kannst du auf Environment-Variablen zugreifen, indem du dem Variablennamen je ein Prozentzeichen voran- und nachstellst, also %TEMP%. In PHP wiederum kannst du diese Variablen über $_ENV ansprechen. Andere Programmiersprachen bieten zum Teil wieder andere Mechanismen.
    Wie Microsoft das in JScript oder VBScript realisiert, weiß ich nicht. Aber du suchst wohl nach Umgebungs- oder Environment-Variablen und solltest mit diesem Stichwort in der Doku fündig werden.

    Ciao,
     Martin

    --
    Die letzten Worte des Architekten:
    Mir fällt da gerade was ein...
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      Unter der Eingabeaufforderung kann man unter "set" folgende Variablen finden:

      TEMP = c:\DOCUM...\USER\LOCALS...\TEMP

      Wie kann ich diesen Ordner für jeden Nutzer ansprechen? Oder wie kann ich gleich diese "TEMP" nutzen?

      in der DOS/Windows-Shell kannst du auf Environment-Variablen zugreifen, indem du dem Variablennamen je ein Prozentzeichen voran- und nachstellst, also %TEMP%. In PHP wiederum kannst du diese Variablen über $_ENV ansprechen. Andere Programmiersprachen bieten zum Teil wieder andere Mechanismen.
      Wie Microsoft das in JScript oder VBScript realisiert, weiß ich nicht. Aber du suchst wohl nach Umgebungs- oder Environment-Variablen und solltest mit diesem Stichwort in der Doku fündig werden.

      Ciao,
      Martin

      Hy auch,

      Das Ansprechen mit %TEMP% ist ja in CMD kein problem, dass kriege ich ja hin. Die Frage ist, wie kriege ich diese Variable in mein Script (mittels Javascript). Oder anders gefragt: wie kann ich diesen Ordner ansprechen, wenn sich der Nutzer jedesmal ändert oder nur derjenige auf sein Ordner anmelden möchte. Könnte ja alle Namen der Nutzer durchlaufen lassen, abfragen ob es für ihn lesbar ist und dann zugreifen aber das scheint mir doch sehr kompliziert zu sein.

      Dachte an eine Lösung wie "C:\Documents and Setting...\ + USER + \Temp..."

      Das andere mit dem Link ist zwar nett aber wie definiere ich dieses "WScript"?

      var WshShell = WScript.CreateObject("WScript.Shell");  
      var WshSysEnv = WshShell.Environment("SYSTEM");  
      var testit = WScript.Echo(WshSysEnv("TEMP"));
      

      Weil da bringt er mir ne Fehlermeldung?

      LG Romero

      PS: Habe schon gegoogelt und so aber bisher keine genaue Beschreibung zu diesem Thema gefunden.

      1. Das andere mit dem Link ist zwar nett aber wie definiere ich dieses "WScript"?

        var WshShell = new ActiveXObject("WScript.Shell");
        var WshSysEnv = WshShell.Environment("SYSTEM");
        alert(WshSysEnv("TEMP"));

      2. Hallo,

        Das andere mit dem Link ist zwar nett aber wie definiere ich dieses "WScript"?

        var WshShell = WScript.CreateObject("WScript.Shell");

        var WshSysEnv = WshShell.Environment("SYSTEM");
        var testit = WScript.Echo(WshSysEnv("TEMP"));

          
        über ein entsprechendes ActiveXObject, siehe z.B. [diesen Archivbeitrag](/archiv/2007/10/t160894/#m1047574) (Funktion get\_output\_findstr).  
          
          
        Freundliche Grüße  
          
        Vinzenz
        
        1. Hallo,

          Das andere mit dem Link ist zwar nett aber wie definiere ich dieses "WScript"?

          var WshShell = WScript.CreateObject("WScript.Shell");

          var WshSysEnv = WshShell.Environment("SYSTEM");
          var testit = WScript.Echo(WshSysEnv("TEMP"));

          
          >   
          > über ein entsprechendes ActiveXObject, siehe z.B. [diesen Archivbeitrag](/archiv/2007/10/t160894/#m1047574) (Funktion get\_output\_findstr).  
          >   
          >   
          > Freundliche Grüße  
          >   
          > Vinzenz  
            
          Habe mal folgendes probiert:  
          ~~~javascript
            
          			var WshShell = new ActiveXObject("WScript.Shell");  
              			var command = "%COMSPEC%"  
            
              			var oExec = WshShell.Exec(command);  
            
              			var testit = oExec.StdOut.ReadAll();  
            
          			alert( "-->" + testit );
          

          COMSPEC ist ja die Variable im CMD oder? Also wenn ich nun da TEMP angebe, dann erscheint "Zugriff verweigert". Kann mir jemand bitte sagen wo ich was ändern muss damit ich den lokalen Temp-Order öffnen kann? So wie er in der CMD unter set steht?

          Weil hab vieles durchgelesen und probiert aber komm irgendwie nicht vorran.

          Vielen Dank im Vorraus.

          LG Romero

          1. Hallo,

            Habe mal folgendes probiert:

              	var WshShell = new ActiveXObject("WScript.Shell");  
            

            var command = "%COMSPEC%"

            var oExec = WshShell.Exec(command);

            var testit = oExec.StdOut.ReadAll();

              	alert( "-->" + testit );
            
            
            >   
            > COMSPEC ist ja die Variable im CMD oder?  
              
            eh' nein. Das kann nicht funktionieren. Ich baute damals ein komplettes Kommando zusammen, das ich der CMD übergab.  
              
            Das könntest Du zwar auch tun, indem Du SET TEMP der CMD.EXE übergibst und dann die Ausgabe wieder auseinanderdröselst. Wozu so kompliziert, wenn es doch den direkten Zugriff gibt, so wie es der [Unbekannte](https://forum.selfhtml.org/?t=210333&m=1433421) bereits schrieb:  
              
            ~~~javascript
            var WshShell = new ActiveXObject("WScript.Shell");  
            var WshSysEnv = WshShell.Environment("SYSTEM");  
            alert(WshSysEnv("TEMP"));  
            
            

            Freundliche Grüße

            Vinzenz

            1. eh' nein. Das kann nicht funktionieren. Ich baute damals ein komplettes Kommando zusammen, das ich der CMD übergab.

              Das könntest Du zwar auch tun, indem Du SET TEMP der CMD.EXE übergibst und dann die Ausgabe wieder auseinanderdröselst. Wozu so kompliziert, wenn es doch den direkten Zugriff gibt, so wie es der Unbekannte bereits schrieb:

              var WshShell = new ActiveXObject("WScript.Shell");

              var WshSysEnv = WshShell.Environment("SYSTEM");
              alert(WshSysEnv("TEMP"));

              
              >   
              >   
              > Freundliche Grüße  
              >   
              > Vinzenz  
                
              Hallöchen zurück,  
                
              ok habe nun folgendes gemacht: Das ist der Code-Auszug:  
                
              ~~~javascript
              			var WshShell = new ActiveXObject("WScript.Shell");  
              			var WshSysEnv = WshShell.Environment("SYSTEM");  
              			var testit = WshSysEnv("TEMP");  
                
                
              			function huhu( FileName ) {  
                
              				var fso,f1;  
              				var FileStr = "";  
                
              				alert( "gucken: " + FileName );  
                
              				fso = new ActiveXObject("Scripting.Filesystemobject");  
                
              				f1 = fso.OpenTextFile(FileName, 1);  
              				FileStr = f1.ReadAll();  
              				f1.close();  
                
              			};  
                
              			var abc = huhu( testit + "\\hallo.txt" ).replace(/\r\n/g,"\n").split("\n");  
                
              			alert( "-->" + abc );
              

              unter dem 1. alert() gibt er folgendes aus: gucken:%SystemRoot%\TEMP\hallo.txt

              und unter dem 2. kommt Pfad nicht gefunden? Was mache ich da falsch? Bzw. warum hat er kein Zugriff auf den Pfad der Datei?

              LG Romero

              1. und unter dem 2. kommt Pfad nicht gefunden? Was mache ich da falsch? Bzw. warum hat er kein Zugriff auf den Pfad der Datei?

                Weil unter diesem Pfad diese Datei nicht existiert?

                1. und unter dem 2. kommt Pfad nicht gefunden? Was mache ich da falsch? Bzw. warum hat er kein Zugriff auf den Pfad der Datei?
                  Weil unter diesem Pfad diese Datei nicht existiert?

                  Das wäre der Pfad dazu:

                  "C:\Documents and Settings\rauerr\Local Settings\Temp" und darunter finde ich meine "hallo.txt"

                  Aber für ihn ist der Teil mit c:... bis TEMP ein "%SystemRoot%".

                  LG Romero

                  1. Aber für ihn ist der Teil mit c:... bis TEMP ein "%SystemRoot%".

                    Das ist auch eine Environmentvariable

                    1. Aber für ihn ist der Teil mit c:... bis TEMP ein "%SystemRoot%".
                      Das ist auch eine Environmentvariable

                      sorry das ich das frage aber wie geht das genau mit dem umwandeln oder auflösen?

                      so das dann der richtige pfad da steht?

                      LG Romero

                      1. sorry das ich das frage aber wie geht das genau mit dem umwandeln oder auflösen?

                        so das dann der richtige pfad da steht?

                        So wie vorher die Environmentvariable auslesen und %Environmentvariable% durch den ausgelesenen Wert ersetzen.

                        1. So wie vorher die Environmentvariable auslesen und %Environmentvariable% durch den ausgelesenen Wert ersetzen.

                          Guten Morgen auch,

                          irgendwie stehe ich grad aufn Schlauch. Wie ersetze ich diese %Environmentvariable% durch den ausgelesenen Wert?

                          			var WshShell = new ActiveXObject("WScript.Shell");  
                          			var WshSysEnv = WshShell.Environment("SYSTEM");  
                          			var testit = WshSysEnv("%TEMP%");  
                            
                          			alert( "_-_-> " + testit );  
                            
                            
                          			function huhu( FileName ) {  
                            
                          				var fso,f1;  
                          				var FileStr = "";  
                            
                          				alert( "gucken: " + FileName );  
                            
                          				fso = new ActiveXObject("Scripting.Filesystemobject");  
                            
                          				f1 = fso.OpenTextFile(FileName, 1);  
                          				FileStr = f1.ReadAll();  
                          				f1.close();  
                            
                          			};  
                            
                          			var abc = huhu( testit + "\\hallo.txt" ).replace(/\r\n/g,"\n").split("\n");  
                            
                          			alert( "-->" + abc );
                          

                          Das ist ja mein Anfang. So ermittle ich erstmal den Wert %SystemRoot%, was sicherlich der Teilfpad für den Temp-Ordner ist. Ich möchte nun also wissen, wie dieser Pfad nun aussieht. Weil bräuchte ja für jeden Nutzer Zugang zu seinem eigenem Temp-Ordner um da Daten ablegen zu können.

                          LG Romero

                          PS: Mein Script ist ne *.HTA-Datei. Vielleicht hilft das auch weiter.

                          1. var testit = WshSysEnv("%TEMP%");

                            Müsste natürlich so aussehen: var testit = WshSysEnv("TEMP");

                2. und unter dem 2. kommt Pfad nicht gefunden? Was mache ich da falsch? Bzw. warum hat er kein Zugriff auf den Pfad der Datei?
                  Weil unter diesem Pfad diese Datei nicht existiert?

                  Oder du %SystemRoot% noch auflösen musst?

                  1. und unter dem 2. kommt Pfad nicht gefunden? Was mache ich da falsch? Bzw. warum hat er kein Zugriff auf den Pfad der Datei?
                    Weil unter diesem Pfad diese Datei nicht existiert?
                    Oder du %SystemRoot% noch auflösen musst?

                    Und wie geht das dann? Ic glaube dann würde es gehen.

                    LG Romero

              2. Hallo,

                bitte zitiere sinnvoll, nicht das gesamte Vorposting. Danke.

                unter dem 1. alert() gibt er folgendes aus: gucken:%SystemRoot%\TEMP\hallo.txt

                Also ist dein System so eingerichtet, dass es nicht pro User ein separates TEMP-Verzeichnis gibt, sondern nur ein gemeinsames für alle. Denn %systemroot% ist bekanntlich das Basisverzeichnis des installierten Windows, typischerweise also C:\Windows. Das auf deinem System verwendete TEMP-Verzeichnis heißt also wohl C:\Windows\TEMP.
                Die Schmuddelzone mittem auf der Systempartition? Nicht schön ...

                Ciao,
                 Martin

                --
                Man soll den Tag nicht vor dem Abend loben.
                Und den Mann nicht vor dem Morgen.
                  (alte Volksweisheit)
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Haloo zurück

                  Also ist dein System so eingerichtet, dass es nicht pro User ein separates
                  TEMP-Verzeichnis gibt, sondern nur ein gemeinsames für alle. Denn
                  %systemroot% ist bekanntlich das Basisverzeichnis des installierten
                  Windows, typischerweise also C:\Windows. Das auf deinem System verwendete
                  TEMP-Verzeichnis heißt also wohl C:\Windows\TEMP.

                  Naja nicht direkt. Es gibt zwar ein TEMP unter C:\Windows aber das ist nicht das TEMP was ich meine bzw. suche.

                  Unter der Eingabeaufforderung bei SET-Eingabe wird die Umgebungsvariable TEMP (oder TMP) angezeigt, mit C:\Documents and Setting\UserName(das ist ja variabel)\Local Settings\Temp und da will ich rein. Weil ja dieser Ordner ja nur für den angemeldeten Nutzer zugänglich ist. Und da soll er eine temporäre Datei anlegen welche dann der User nutzen und auslesen kann.

                  Und auf diesen Ordner kann ich nicht zugreifen, da er mir immer diese Variable %SYSTEMROOT% anzeigt, wenn ich das TEMP auslesen möchte. Und %SYSTEMROOT% ist aber laut CMD die Variable für C:\Windows.

                  Wo liegt also mein Fehler oder wie kann ich die Variable TEMP unter CMD auslesen oder speichern, dass er mir, je nachdem wer mein Script nutzt, in den richtigen Ordner springt um da die Datei zu speichern.

                  LG Romero

                  1. Hallo,

                    Also ist dein System so eingerichtet, dass es nicht pro User ein separates TEMP-Verzeichnis gibt, sondern nur ein gemeinsames für alle. Denn %systemroot% ist bekanntlich das Basisverzeichnis des installierten Windows, typischerweise also C:\Windows. Das auf deinem System verwendete TEMP-Verzeichnis heißt also wohl C:\Windows\TEMP.
                    Naja nicht direkt. Es gibt zwar ein TEMP unter C:\Windows aber das ist nicht das TEMP was ich meine bzw. suche.

                    aber es ist dasjenige, das dein System zu verwenden scheint.

                    Unter der Eingabeaufforderung bei SET-Eingabe wird die Umgebungsvariable TEMP (oder TMP) angezeigt, mit C:\Documents and Setting\UserName(das ist ja variabel)\Local Settings\Temp und da will ich rein.

                    Sind TEMP und TMP beide gleich? Üblicherweise ja - Zumindest unterscheiden sie sich aber von dem Verzeichnis, das dein Script herausbekommt. Läuft dein Script vielleicht im SYSTEM-Kontext, anstatt im Kontext eines angemeldeten Benutzers?
                    Lass dein Script mal %userprofile% abfragen, dann sehen wir zumindest, in welchem Benutzerprofil es läuft.

                    Du kannst prinzipbedingt nur die Einstellungen des Users abfragen, unter dem das abfragende Programm läuft. Wenn das Programm also unter einem anderen Benutzernamen (oder gar als SYSTEM) läuft, bekommt es dessen Environment zu sehen, und nicht unbedingt das, das du als interaktiver User hast.

                    Wo liegt also mein Fehler ...

                    Du solltest zunächst mal die Benutzer- und Anmeldeverhältnisse klären. Dazu muss man vielleicht einen Schritt zurücktreten und das ganze Gefüge mit etwas Abstand betrachten.

                    oder wie kann ich die Variable TEMP unter CMD auslesen oder speichern, dass er mir, je nachdem wer mein Script nutzt, in den richtigen Ordner springt um da die Datei zu speichern.

                    Du hast eine amüsante Ausdrucksweise. Weder ist klar, wer "er" ist, noch warum er "in einen Ordner springen" soll". ;-)

                    Ciao,
                     Martin

                    --
                    Warum können wir heute so sicher sagen, dass Gott keine Frau sein kann?
                    Weil dann nach "Es werde Licht" der nächste Satz "Wie sieht denn das hier aus?!" gewesen wäre.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. Hallo

                      Sind TEMP und TMP beide gleich? Üblicherweise ja - Zumindest unterscheiden sie sich aber von dem Verzeichnis, das dein Script herausbekommt. Läuft dein Script vielleicht im SYSTEM-Kontext, anstatt im Kontext eines angemeldeten Benutzers?
                      Lass dein Script mal %userprofile% abfragen, dann sehen wir zumindest, in welchem Benutzerprofil es läuft.

                      TEMP und TMP sind laut CMD identisch.

                      Habe folgendes geschrieben und testen lassen:

                        
                      			var WshShell = new ActiveXObject("WScript.Shell");  
                      			var WshSysEnv = WshShell.Environment("SYSTEM");  
                      			alert( WshSysEnv("USERPROFILE") );
                      

                      Das Resultat war, dass nix ausgegeben wurde. Also ein "leeres" alert().
                      Das Selbe ist bei "USERNAME", "TEMP" sowie "USERDOMAIN". Wenn ich aber an der Stelle "COMSPEC" eintrage, erscheint da folgendes: %SystemRoot%\System32\cmd.exe

                      Da ist wieder dieses %SystemRoot% angegeben obwohl an dieser Stelle ja C:\Windows stehen müsste.

                      Du kannst prinzipbedingt nur die Einstellungen des Users abfragen, unter dem das abfragende Programm läuft. Wenn das Programm also unter einem anderen Benutzernamen (oder gar als SYSTEM) läuft, bekommt es dessen Environment zu sehen, und nicht unbedingt das, das du als interaktiver User hast.

                      Wie bekomme ich es raus? Sehe ja unter CMD das ich angemeldet bin. Aber wie ist es denn wenn mehrere Nutzer dieses Script gleichzeitig verwenden. Kann es da zu Problemen kommen?

                      Diesen Scriptausszug teste ich gerade in meinem eigenem Ordner, sprich nur ich führe dieses Script aus. Also müsste ja in dem Falle ja nur meine "TEMP" angezeigt werden.

                      Du hast eine amüsante Ausdrucksweise. Weder ist klar, wer "er" ist, noch warum er "in einen Ordner springen" soll". ;-)

                      Ok gelobe Besserung :)

                      LG Romero

                      1. Hi,

                        TEMP und TMP sind laut CMD identisch.

                        okay, das dachte ich mir - nur ist es im Moment nicht relevant, denn ...

                        		var WshShell = new ActiveXObject("WScript.Shell");  
                        
                          	var WshSysEnv = WshShell.Environment("SYSTEM");  
                          	alert( WshSysEnv("USERPROFILE") );
                        
                        
                        >   
                        > Das Resultat war, dass nix ausgegeben wurde. Also ein "leeres" alert().  
                          
                        Schlecht. Das heißt, der IE führt das ActiveX-Control tatsächlich \*nicht\* im Kontext des angemeldeten Benutzers aus. Und somit hast du auch keine Möglichkeit, an Einstellungen für eben diesen angemeldeten Benutzer zu kommen. Alle Environment-Daten, die du so bekommst, sind "nur" die globalen, nicht benutzer-bezogenen Werte.  
                          
                        
                        > Das Selbe ist bei "USERNAME", "TEMP" sowie "USERDOMAIN".  
                          
                        Nanu? [Gestern noch](https://forum.selfhtml.org/?t=210333&m=1433429) hast du gesagt, du würdest für TEMP den Wert %SystemRoot%\TEMP rauskriegen. Heute nicht mehr??  
                          
                        
                        > Wenn ich aber an der Stelle "COMSPEC" eintrage, erscheint da folgendes: %SystemRoot%\System32\cmd.exe  
                          
                        Ja klar. Das ist ja auch ein systemabhängiger Wert, der üblicherweise für alle Nutzer identisch ist. In unixoiden Systemen ist es wohl gang und gäbe, dass verschiedene Benutzer verschiedene Shells benutzen; in Windows ist das eher selten.  
                          
                        
                        > Da ist wieder dieses %SystemRoot% angegeben obwohl an dieser Stelle ja C:\Windows stehen müsste.  
                          
                        Warum "müsste"? Ich habe gerade kein laufendes Windows zur Hand, aber hast du schon mal versucht, dieses Term %systemroot% (Groß/Kleinschreibung ist bei Windows egal) einfach so zu verwenden, etwa beim Zugriff auf irgendwelche existierenden(!) Dateien? Soweit ich weiß, wird das von den Windows-Dateisystemfunktionen automatisch wieder aufgelöst. So hat man eine "anonyme" Möglichkeit, auf bestimmte Standardverzeichnisse zuzugreifen, ohne sie genau kennen zu müssen.  
                          
                        
                        > Wie bekomme ich es raus? Sehe ja unter CMD das ich angemeldet bin. Aber wie ist es denn wenn mehrere Nutzer dieses Script gleichzeitig verwenden. Kann es da zu Problemen kommen?  
                          
                        Ja, sie würden alle nur das systemglobale TEMP-Verzeichnis sehen und benutzen. Das scheint einer der Nachteile des ActiveX-Konzepts zu sein.  
                          
                        
                        > Diesen Scriptausszug teste ich gerade in meinem eigenem Ordner, sprich nur ich führe dieses Script aus. Also müsste ja in dem Falle ja nur meine "TEMP" angezeigt werden.  
                          
                        Nein. Von wo aus das Script gestartet wird, ist offensichtlich wurscht. Sobald der IE ein ActiveX-Control lädt und initialisiert, scheint dieses vom IE abgekoppelt im globalen, nicht nutzerbezogenen Kontext zu laufen - zumindest deutet hier alles darauf hin.  
                          
                        Und das würde bedeuten, dass die Methode nicht geeignet ist, um benutzerspezifische Daten herauszubekommen. Ich sagte es schon.  
                          
                        So long,  
                         Martin  
                        
                        -- 
                        Hannes würfelt abends immer, ob er den Abend mit seiner Frau zuhause verbringt oder in die Kneipe geht. Wenn er eine 6 würfelt, geht er in die Kneipe.  
                        Gestern musste er 37mal würfeln.  
                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                        
                        1. Hy,

                          ja irgendwie sind da programmtechnische Dinge, welche ich abändern bzw. hinzufügen muss um nun rauszubekommen, wie ich auf den benutzerspezifischen Temp-Ordner zugreifen kann.

                          @unknown

                          Wenn ich da "USER" einstelle, erscheint nun für das "ausgelesene" TEMP, folgendes: %USERPROFILE%\Local Settings\Temp

                          Es ist also ansatzweise der Ordner für den Nutzer. Aber wie lese ich nun wiederrum diesen %USERPROFILE% aus?

                          @Martin

                          Wie bekomme ich nun diese benutzer-bezogenen Daten? Bzw. wie kann ich sie mir zu nutze machen? Könnte natürlich auch mir einen Strin zusammenbasteln, der eine Abfrage über den Benutzer startet und dann so den Ordner öffnen lässt aber es ist, denk ich, der kompliziertere Weg.

                          Also nochmal die Frage an Euch: Wie kann ich nun benutzer-bezogene Daten, sprich das Ansprechen des Temp-Ordners des Nutzers realisieren, damit ich diesen Ordner in vollem Umfang nutzen kann?

                          Entweder einen Link wo alles relavante drin steht oder (und das wäre mir persönlich lieber), einen Auszug oder ein Teilscript wo ich sehe, wie man diesen Pfad auslesen kann.

                          Es ist, ehrlich gesagt, ein sehr komplexen Gebiet und ich bräuchte diese Lösung dringend um mein Script zur Verfügung stellen zu können.

                          Vielen lieben Dank dafür.

                          LG Romero

                          1. Wenn ich da "USER" einstelle, erscheint nun für das "ausgelesene" TEMP, folgendes: %USERPROFILE%\Local Settings\Temp

                            Es ist also ansatzweise der Ordner für den Nutzer. Aber wie lese ich nun wiederrum diesen %USERPROFILE% aus?

                            http://forum.de.selfhtml.org/?t=210333&m=1433438
                            Ich verstehe dein Problem nicht, das hast du doch schon hier
                            http://forum.de.selfhtml.org/?t=210333&m=1433530
                            gemacht!

                            1. hy

                              http://forum.de.selfhtml.org/?t=210333&m=1433438
                              Ich verstehe dein Problem nicht, das hast du doch schon hier
                              http://forum.de.selfhtml.org/?t=210333&m=1433530
                              gemacht!

                              Ich bekomme aber mittels alert() aber nix angezeigt. Egal ob ich Environment("SYSTEM") oder Environment("USER") eintrage. Beide male frage ich das TEMP ab. Bei "SYSTEM" kommt das mit dem %SystemRoot%\Temp und bei "USER" kommt das mit dem %USERPROFILE%\Local Settings\Temp.

                              Aber jedesmal mit einer weiteren Variable. Und wenn ich nun aber separat diese %Variable% auslesen möchte um zu sehen, was sich dahinter verbirgt, bekomme ich rein gar nix zu sehen mittels alert().

                              Deshalb die Frage an euch: Könnt ihr mir da ein Teilscript zeigen? Was ich testen kann?

                              @unknown

                              Ich bitte dich, deinen eigenen Temp-Ordner anzeigen zu lassen bzw. deren Pfad, als String. Also wie du es mittels Javascript auslesen kannst.

                              LG Romero

                              1. Hi,

                                Ich bekomme aber mittels alert() aber nix angezeigt. Egal ob ich Environment("SYSTEM") oder Environment("USER") eintrage. Beide male frage ich das TEMP ab. Bei "SYSTEM" kommt das mit dem %SystemRoot%\Temp und bei "USER" kommt das mit dem %USERPROFILE%\Local Settings\Temp.

                                na also, Problem gelöst!

                                Aber jedesmal mit einer weiteren Variable.

                                Ja und?

                                Und wenn ich nun aber separat diese %Variable% auslesen möchte um zu sehen, was sich dahinter verbirgt, bekomme ich rein gar nix zu sehen mittels alert().

                                Du brauchst sie ja auch nicht weiter aufzulösen - einfach nur *benutzen*, so wie man in einer Batchdatei ja sinnvollerweise auch nicht "C:\Dokumente und Einstellungen\user\Desktop schreiben würde, sondern "%userprofile%\Desktop". Wo dieses Verzeichnis dann tatsächlich liegt, kann einem dabei egal sein.

                                Ciao,
                                 Martin

                                --
                                Wenn man sieht, was der liebe Gott auf der Erde so alles zulässt, hat man das Gefühl, er experimentiert immer noch.
                                  (Sir Peter Ustinov, Charakterdarsteller, †2004)
                                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                1. Du brauchst sie ja auch nicht weiter aufzulösen - einfach nur *benutzen*, so wie man in einer Batchdatei ja sinnvollerweise auch nicht "C:\Dokumente und Einstellungen\user\Desktop schreiben würde, sondern "%userprofile%\Desktop". Wo dieses Verzeichnis dann tatsächlich liegt, kann einem dabei egal sein.

                                  D.h. also ich verwende einfach diese Variable %USERPROFILE% als Pfad-Anfang für den benutzer-spezifischen auslesen des Inhalts von Temp?

                                  LG Romero

                                  1. D.h. also ich verwende einfach diese Variable %USERPROFILE% als Pfad-Anfang für den benutzer-spezifischen auslesen des Inhalts von Temp?

                                    Ich dachte das ging nicht?!

                                    1. D.h. also ich verwende einfach diese Variable %USERPROFILE% als Pfad-Anfang für den benutzer-spezifischen auslesen des Inhalts von Temp?

                                      Ich dachte das ging nicht?!

                                      Nun hab ich die Lösung dafür: Ausführliche Test's werden noch durchgeführt.

                                      			var WshShell = new ActiveXObject("WScript.Shell");  
                                      			var WshSysEnv1 = WshShell.Environment("Process");  
                                      			  
                                      			var z = WshSysEnv1("TEMP");  
                                      			  
                                      			function huhu( FileName ) {  
                                      			var fso,f1;  
                                      			var FileStr = "";  
                                        
                                      			fso = new ActiveXObject("Scripting.Filesystemobject");  
                                      			  
                                      			f1 = fso.OpenTextFile(FileName, 1);  
                                      			FileStr = f1.ReadAll();  
                                      			f1.close();  
                                      			  
                                      			return FileStr;  
                                      			};  
                                      			  
                                      			var test = huhu( z + "/hallo.txt" ).replace(/\r\n/g,"\n").split("\n");  
                                      			  
                                      			alert( "~~> " + test );
                                      

                                      Damit greife ich nun auf den Ordner "Temp" des Nutzers zu und lese z.B. eine *.txt-Datei aus. Also unter meiner Anmeldung funktioniert es. Ob und wie es bei den anderen Nutzern auch funktioniert, wird getestet.

                                      LG Romero

                                      PS: Danke an euch, trotz des langen Weges.

                                2. ... auch nicht "C:\Dokumente und Einstellungen\user\Desktop schreiben würde, sondern "%userprofile%\Desktop".

                                  Also wenn ich nun alert( %userprofile% + "\Desktop" ) angebe, wird mir nun folgendes angezeigt: C:\Dokumente und Einstellungen\user\Desktop

                                  LG Romero

                                  1. Hallo,

                                    ... auch nicht "C:\Dokumente und Einstellungen\user\Desktop schreiben würde, sondern "%userprofile%\Desktop".
                                    Also wenn ich nun alert( %userprofile% + "\Desktop" ) angebe, wird mir nun folgendes angezeigt: C:\Dokumente und Einstellungen\user\Desktop

                                    jetzt bin *ich* verblüfft.

                                    Erstens ist das schon syntaktisch falsch, es müsste eher heißen:
                                      alert("%userprofile%\Desktop");

                                    Zweitens würdest du so auch nicht erfahren, welches Verzeichnis sich nun wirklich hinter %userprofile% verbirgt, weil das erst vom Windows-Filesystem aufgelöst wird. Musst du aber auch nicht wissen. Windows weiß es, und das genügt.

                                    Ciao,
                                     Martin

                                    --
                                    Wer es in einem Unternehmen zu etwas bringen will, muss so tun, als hätte er es schon zu etwas gebracht.
                                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                              2. Ich bekomme aber mittels alert() aber nix angezeigt. Egal ob ich Environment("SYSTEM") oder Environment("USER") eintrage.

                                hmm, das ist unschön, dann musst du das Environment des aktuellen Prozesses auslesen (sollte in deinem Fall kein Problem sein)

                                var WshShell = new ActiveXObject("WScript.Shell");
                                var WshSysEnv = WshShell.Environment("Process");
                                alert(WshSysEnv("USERPROFILE"));

                                1. Ich bekomme aber mittels alert() aber nix angezeigt. Egal ob ich Environment("SYSTEM") oder Environment("USER") eintrage.
                                  hmm, das ist unschön, dann musst du das Environment des aktuellen Prozesses auslesen (sollte in deinem Fall kein Problem sein)

                                  var WshShell = new ActiveXObject("WScript.Shell");
                                  var WshSysEnv = WshShell.Environment("Process");
                                  alert(WshSysEnv("USERPROFILE"));

                                  Ja endlich.das ist genau die Anzeige die ich sehen will. Und dann mache ich den Rest genauso. Einmal mit "Prozeß" und dann mit "USER".

                                  Summe ist dann der Pfad.

                                  LG Romero

                      2. Nimm mal WshShell.Environment("User");