locked
32/64-Bit Programmverknüpfungen RRS feed

  • Frage

  • Ist es möglich, dass ein Benutzer mit auf einen Server umgeleiteten Desktop sowohl auf einem 32-Bit-Windows7 und einem 64-Bit-Windows7 arbeitet? Das Problem sind die Programmverknüpfungen, die auf C:\Programme zeigen (da unter 32-Bit angelegt) und beim 64-Bit-System auf C:\Programme(x86) zeigen müßten. Gibt es dafür eine Lösung?
    Montag, 17. September 2012 08:34

Antworten

  •  
    > user = InputBox("Benutzername: ")
     
    User-Input??? Würg!!!
     
    > %PROGDIR% ist einfach ein von mir gewählter Variablenname, den  ich
    > via GP auf 64-bit-Systemen mit "C:\Program Files (x86)\" und auf
    > 32-bit-Systemen mit "C:\Programme\" fülle. In der Richtung hatte ich
    > Deine erste Antwort verstanden.
     
    Schick mir - wenn Du willst - mal das ganze Skript (vorher zippen und
    mit Kennwort versehen) an
    martin<unterstrich>binder<at>gmx<dot>de
    Ich seh nicht, wie in %PROGDIR% ein C:\ vorne reinkommen sollte...
     
    Ich hoffe, Du hast in der GPP wenigstens %programfiles% bzw.
    %programfiles(x86)% als Inhalt für %PROGDIR% verwendet? Wann immer
    möglich, laß Windows entscheiden ;-)
    Da Du die Links ohnehin per VBS erstellst, könntest darauf aber auch
    verzichten:
     
    Set oEnv = oWSH.Environment( "PROCESS" )
    OSArch = oEnv( "PROCESSOR_ARCHITECTURE" )
    CPUArch = oEnv( "PROCESSOR_ARCHITEW6432" )
    If OSArch = "x86" and CPUArch = "" Then
        'Wir sind auf einem 32 Bit System - verwende %programfiles%
    End If
    If OSArch = "amd64" Or CPUArch = "amd64" Then
        'Wir sind auf einem 64 Bit System - verwende %programfiles(x86)%
        If OSArch = "x86" Then
            'Wir sind auf einem 64 Bit System, laufen aber in SysWow64...
    Verwende was Du willst - hier steht in beiden Programfiles-Variablen das
    gleiche drin...
        End If
    End If
     
    So langsam sollten wir uns damit aber ins Skripting-Forum verziehen ;-))
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    • Als Antwort vorgeschlagen Alex Pitulice Freitag, 21. September 2012 07:31
    • Als Antwort markiert Alex Pitulice Montag, 24. September 2012 06:56
    Mittwoch, 19. September 2012 11:59

Alle Antworten

  •  
    > Ist es möglich, dass ein Benutzer mit auf einen Server umgeleiteten
    > Desktop sowohl auf einem 32-Bit-Windows7 und einem 64-Bit-Windows7
    > arbeitet? Das Problem sind die Programmverknüpfungen, die auf
    > C:\Programme zeigen (da unter 32-Bit angelegt) und beim 64-Bit-System
    > auf C:\Programme(x86) zeigen müßten. Gibt es dafür eine Lösung?
     
    Ja, gibt es - erstelle Dir (z.B. per GPP "Umgebungsvariablen") eine
    eigene Umgebungsvariable für den Computer (Namen sind Schall und Rauch),
    die jeweils auf das "richtige" Programmverzeichnis zeigt, und verwende
    diese Variable in Deinen Shortcuts. Oder erstelle die Shortcuts
    dynamisch per GPP "Verknüpfungen" und trage den richtigen Pfad ein.
     
    mfg Martin
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    • Als Antwort markiert q5616417 Dienstag, 18. September 2012 09:03
    • Tag als Antwort aufgehoben q5616417 Dienstag, 18. September 2012 13:22
    Dienstag, 18. September 2012 08:05
  • Hallo Martin,

    vielen Dank für die Antwort. Ich habe allerdings noch ein Problem. Und zwar will ich die bestehenden Verknüpfungen per VB-Script von z.B. "C:\Programme\..." in "%PROGDIR\..." ändern. Das hakt an der Stelle, an der ich die Stringvariable mit dem neuen Pfad dem link zuweisen will (link.targetpath = newpath). Bei diesem Schritt wird vor meine Variable immer noch ein "C:\" gesetzt, so dass die Verknüpfungen nicht funktionieren. Hast Du dafür einen Tip?

    Dienstag, 18. September 2012 13:30
  •  
    > Hallo Martin,
    >
    > vielen Dank für die Antwort. Ich habe allerdings noch ein Problem. Und
    > zwar will ich die bestehenden Verknüpfungen per VB-Script von z.B.
    > "C:\Programme\..." in "%PROGDIR\..." ändern. Das hakt an der Stelle,
    > an der ich die Stringvariable mit dem neuen Pfad dem link zuweisen
    > will (link.targetpath = newpath). Bei diesem Schritt wird vor meine
    > Variable immer noch ein "C:\" gesetzt, so dass die Verknüpfungen nicht
    > funktionieren. Hast Du dafür einen Tip?
    >
     
    NOCH nicht - zeigst Du mir den ganzen relevanten Code?
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    Dienstag, 18. September 2012 20:59
  • Gerne :)

    For each file in fso.GetFolder(desktopfolder).Files
    	If Strcomp(right(file.name,4),".lnk",vbTextCompare) = 0 Then
    		set link = wso.CreateShortcut(fso.GetAbsolutePathName(file))
    		oldtarget = link.targetpath
    		oldwd = link.workingdirectory
    		If Strcomp(left(oldtarget,13),"C:\Programme\",vbTextCompare) = 0 Then
    			newtarget = Replace(oldtarget, "C:\Programme\", "%PROGDIR%\")
    			newwd = Replace(oldwd, "C:\Programme\", "%PROGDIR%\")
    			newwd = Replace(oldwd, "C:\Program Files\", "%PROGDIR%\")
    
                                 'zum testen:
                                 msgbox newtarget
    
    			link.targetpath = newtarget
    
                                 'zum testen:
    			test = link.targetpath
    			msgbox test
    
    			link.workingdirectory = newwd
    			link.save
    			End If
    		If Strcomp(left(oldtarget,17),"C:\Program Files\",vbTextCompare) = 0 Then
    			newtarget = Replace(oldtarget, "C:\Program Files\", "%PROGDIR%\")
    			newwd = Replace(oldwd, "C:\Program Files\", "%PROGDIR%\")
    			newwd = Replace(oldwd, "C:\Programme\", "%PROGDIR%\")
    			link.targetpath = newtarget
    			link.workingdirectory = newwd
    			link.save
    		End If
    	End If
    Next


    Edit-PS: Übrigens: das Arbeitsverzeichnis wird korrekt gesetzt.

    • Bearbeitet q5616417 Mittwoch, 19. September 2012 06:00
    Mittwoch, 19. September 2012 05:57
  •  
    > Gerne :)
    >
     
    Na, dann schauen wir mal ;-)
     
    Wie ermittelst Du "desktopfolder"? Hoffentlich mit
    WshShell.SpecialFolders("Desktop") ;-))
     
    > newtarget = Replace(oldtarget, "C:\Programme\", "%PROGDIR%\")
     
    Sieht insgesamt eigentlch gut aus, aber: Was ist denn %PROGDIR%? Wie
    wird das gefüllt?
     
    > If Strcomp(left(oldtarget,17),"C:\Program Files\",vbTextCompare) = 0 Then
     
    Zusammenhangloser Tip - da eignet sich Instr IMHO besser als Strcomp:
    If Instr( 1, oldtarget, "C:\Program Files\", vbTextCompare ) = 1 Then...
     
    mfg Martin
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    Mittwoch, 19. September 2012 06:39
  • > Wie ermittelst Du "desktopfolder"? Hoffentlich mit

    > WshShell.SpecialFolders("Desktop") ;-))

    Nee, leider nicht!

    Sondern so:

    user = InputBox("Benutzername: ")
    desktopfolder = "\\<Fileserver>\<Freigabe>\Benutzerdaten\" + user + "\Desktop"


    %PROGDIR% ist einfach ein von mir gewählter Variablenname, den  ich via GP auf 64-bit-Systemen mit "C:\Program Files (x86)\" und auf 32-bit-Systemen mit "C:\Programme\" fülle. In der Richtung hatte ich Deine erste Antwort verstanden.
    • Bearbeitet q5616417 Mittwoch, 19. September 2012 07:34
    Mittwoch, 19. September 2012 06:54
  •  
    > user = InputBox("Benutzername: ")
     
    User-Input??? Würg!!!
     
    > %PROGDIR% ist einfach ein von mir gewählter Variablenname, den  ich
    > via GP auf 64-bit-Systemen mit "C:\Program Files (x86)\" und auf
    > 32-bit-Systemen mit "C:\Programme\" fülle. In der Richtung hatte ich
    > Deine erste Antwort verstanden.
     
    Schick mir - wenn Du willst - mal das ganze Skript (vorher zippen und
    mit Kennwort versehen) an
    martin<unterstrich>binder<at>gmx<dot>de
    Ich seh nicht, wie in %PROGDIR% ein C:\ vorne reinkommen sollte...
     
    Ich hoffe, Du hast in der GPP wenigstens %programfiles% bzw.
    %programfiles(x86)% als Inhalt für %PROGDIR% verwendet? Wann immer
    möglich, laß Windows entscheiden ;-)
    Da Du die Links ohnehin per VBS erstellst, könntest darauf aber auch
    verzichten:
     
    Set oEnv = oWSH.Environment( "PROCESS" )
    OSArch = oEnv( "PROCESSOR_ARCHITECTURE" )
    CPUArch = oEnv( "PROCESSOR_ARCHITEW6432" )
    If OSArch = "x86" and CPUArch = "" Then
        'Wir sind auf einem 32 Bit System - verwende %programfiles%
    End If
    If OSArch = "amd64" Or CPUArch = "amd64" Then
        'Wir sind auf einem 64 Bit System - verwende %programfiles(x86)%
        If OSArch = "x86" Then
            'Wir sind auf einem 64 Bit System, laufen aber in SysWow64...
    Verwende was Du willst - hier steht in beiden Programfiles-Variablen das
    gleiche drin...
        End If
    End If
     
    So langsam sollten wir uns damit aber ins Skripting-Forum verziehen ;-))
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    • Als Antwort vorgeschlagen Alex Pitulice Freitag, 21. September 2012 07:31
    • Als Antwort markiert Alex Pitulice Montag, 24. September 2012 06:56
    Mittwoch, 19. September 2012 11:59
  • Freitag, 21. September 2012 07:32