32Bit Script läuft nicht unter 64Bit? Was muss ich ändern?

  • Hab mein Script nun eine 64Bit Unterstützung verpasst, oder besser gesagt ich bin dabei eine zu Entwickeln.
    Ich lasse im Script mehere Verknüpfungen ausführen, zwei von fünf bringen folgenden Fehler beim ausführen:

    [Blockierte Grafik: http://1.2.3.12/bmi/img710.imageshack.us/img710/6602/unbenannt2ux.png]

    Das seltsame ist das ich keinen Unterschied beim Aufrufen der Verknüpfungen erkenne, wo liegt bloß der Fehler? ?(

    Bei diesen Aufruf klappts:

    [autoit]


    if $Architektur == "32 Bit" Then
    ShellExecute($oldscriptdir & "\shortcuts\wartungscenter.lnk")
    ElseIf $Architektur == "64 Bit" Then
    ShellExecute($oldscriptdir & "\shortcuts\wartungscenter64.lnk")
    EndIf

    [/autoit]


    Bei diesen nicht:

    [autoit]


    if $Architektur == "32 Bit" Then
    ShellExecute($oldscriptdir & "\shortcuts\anpassung.lnk")
    ElseIf $Architektur == "64 Bit" Then
    ShellExecute($oldscriptdir & "\shortcuts\anpassung64.lnk")
    EndIf

    [/autoit]

    Da ich erst dachte die Verknüpfung vom 32Bit System ändert sich zum 64Bit System hab ich diese Abfrage eingebaut und 2 Verknüpfungen erstellt.
    Doch nun funktioniert es mit keiner. Ich hab kein Plan auf was ich da noch Achten muss, denn die Aufrufe sind ja identisch. ?(
    Es wäre mir ziemlich unangenehm das komplette Script zu posten, deswegen erklär ich kurz was es tut:
    - Zuerst lasse ich eine GUI erscheinen wo der Benutzer mithilfe von Checkboxen entscheidet welche Einstellung abgearbeitet werden soll.
    - Diese Informationen werden dann ausgelesen und in eine Textdatei gespeichert. Eine 0 bedeutet die Checkbox ist deaktiviert, eine 1 das sie aktiviert ist und der Teil abgearbeitet wird.
    - Ich lasse die Benutzerkontensteuerung per Registryschlüssel abschalten damit ich keine Probleme bei Software-Installation bekomme.
    - Dann mach ich eine Neustart
    - Die .txt wird ausgelesen und die Werte in Variabeln gespeichert
    - Anschließend folgt eine if - Abfrage ob die Variable für "Anpassung-Block" 1 ist, dann soll der Block abgearbeitet werden.
    - Im Block selber erfolgt dann das starten der Verknüpfung wie oben angegeben.

    Dann bekomm ich den Fehler! :(

  • Das versteh ich nich ganz ?(
    Was möchtest du mir damit sagen? Das ich anstatt meiner Registry-Key Auslesung der Architektur auch
    @OSArch nehnmen könnte? Ja, aber wo liegt denn nun der Fehler, habt ihr noch eine Idee was ich bei 64Bit beachten muss? Wenn ihr Windows 7 64Bit habt, könnt ihr es bestimmt nachvollziehn das sich das Wartungscenter über diesen Befehl starten lässt, jedoch nicht das Anpassungs-Fenster.

    Ob ich da eine zusätzliche "workingdir" - Angabe hinzufügen muss?
    Bloß was müsste ich da angeben, immerhin sind diese Verknüpfungen direkt in der Systemsteuerung von Win7 aufgeführt.
    Oder habt ihr vllt. ne andere Idee wie ich Anpassung öffnen kann?

  • Also mit @OSArch wollte ich dir sagen, das X64 zurückgegeben wird (dachte deine Variable liest daraus den Wert) ;)

    Aber wenns dir wirklich um das Wartungscenter und die Anpassung geht, warum machst du nicht einfach

    [autoit]

    ShellExecute("wscui.cpl")
    ShellExecute("rundll32.exe","shell32.dll,Control_RunDLL desk.cpl,,2")

    [/autoit]

    ? ^^

    Unter http://www.osattack.com/windows-7/huge…shell-commands/ findest du übrigens ne gute Übersicht darüber :)

    21 is only half the truth.

    4 Mal editiert, zuletzt von Mahagon (4. Mai 2010 um 10:32)

  • cool, danke. so kann manns auch aufrufen? werd das sofort ausprobieren wenn ich wieder zu hause bin ;)

    EDIT: Ok das klappt ganz gut, aber in deiner Liste hab ich keine Möglichkeit gefunden "Problembehandlung" aufzurufen. Vllt. hab ichs auch übersehn.
    Weiss jemand wie das Fenster "Problembehandlung" auf englisch heisst, oder welchen Befehl ich brauch?

    Einmal editiert, zuletzt von chrisbyRRC (4. Mai 2010 um 18:04)