richtiges klammern setzen???

  • hallo leute, es gibt ja zum einen die " und zum anderen die ' klammern.
    wo ist hier der genaue unterschied?

    ich hänge bei einer komplexen zeilen eingabe fest!
    beispiel
    so geht es ja brima

    Code
    run('cmd /C  reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" test.reg')


    aber wie sieht es aus, wenn ich hier noch eine variabe mit rein nehmen muss???

    Code
    $test = "Winlogon"
    run('cmd /C  reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" & $test & " test.reg')

    oder sogar 2 varablien:

    Code
    $test = "Winlogon"
    $test2 = "Microsoft"
    run('cmd /C  reg export "HKEY_LOCAL_MACHINE\SOFTWARE\" & $test2 & "\Windows NT\CurrentVersion\" & $test & " test.reg')

    Doktore

    • Offizieller Beitrag

    Hallo!

    Unterschied gibt es keinen. Allerdings kann man die Tatsache, dass es zwei Varianten gibt, gut zum Schachteln nutzen. Außerdem haben die doppelten Anführungszeichen oft eine eigene Bedeutung innerhalb von Zeichenketten, sodass ein Escapen sehr aufwändig und unübersichtlich wäre.

    Zu deinen Problemen:
    @1:

    Zitat
    Code
    $test = "Winlogon"
    run('cmd /C  reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" & $test & " test.reg')


    $test = "Winlogon"
    run('cmd /C reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\' & $test & ' test.reg"')

    @2:

    Zitat
    Code
    $test = "Winlogon"
    $test2 = "Microsoft"
    run('cmd /C  reg export "HKEY_LOCAL_MACHINE\SOFTWARE\' & $test2 & '\Windows NT\CurrentVersion\' & $test & ' test.reg"')


    $test = "Winlogon"
    $test2 = "Microsoft"
    run('cmd /C reg export "HKEY_LOCAL_MACHINE\SOFTWARE\' & $test2 & '\Windows NT\CurrentVersion\' & $test & ' test.reg"')

    Der Trick ist, dass am Anfang und am Ende eine Zeichenkette IMMER das gleiche Zeichen stehen muss.
    peethebee

  • lol lol lol, dann war ich ja beim testen gar nicht so toll :)

    aber dann gibt es in autoit doch einen fehler!
    denn das erste script geht nicht und das zweite geht.
    im dritten habe ich mir das erste script mal über ne box angezeigen lassen und es würde doch stimmen.
    weis einer warum das so ist?

    script 1:

    Code
    ; mein working dir ist (D:\Ablage\Programme\AutoIt\scripte\Test)
    ; UserID ist (9375CFF0413111d3B88A00104B2A6676)
    $UserID = RegRead ("HKEY_CURRENT_USER\Identities\","Default User ID")
    Run('cmd /C reg export "HKEY_USERS\S-1-5-21-823518204-606747145-839522115-1003\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\' & $UserID & '" ' & @WorkingDir & '\konten.reg')

    script 2:

    Code
    Run('cmd /C reg export "HKEY_USERS\S-1-5-21-823518204-606747145-839522115-1003\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676" D:\Ablage\Programme\AutoIt\scripte\Test\konten.reg')

    script 3:

    Code
    ; mein working dir ist (D:\Ablage\Programme\AutoIt\scripte\Test)
    ; UserID ist (9375CFF0413111d3B88A00104B2A6676)
    $UserID = RegRead ("HKEY_CURRENT_USER\Identities\","Default User ID")
    $3 = ('cmd /C reg export "HKEY_USERS\S-1-5-21-823518204-606747145-839522115-1003\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\' & $UserID & '" ' & @WorkingDir & '\konten.reg')
    MsgBox(0,"",$3)

    Doktore

    • Offizieller Beitrag

    Hallo,

    bist du dir sicher, das du im script 1, mit der richtigen User-ID arbeitest?
    Die User-ID die unter HKEY_CURRENT_USER\Identities\ zu finden ist, ist die Windows UserID und hat normalerweise folgendes Format {12345678-1234-1234-1234-123456789AB}.

  • Zitat

    Original von bernd670
    Hallo,

    bist du dir sicher, das du im script 1, mit der richtigen User-ID arbeitest?
    Die User-ID die unter HKEY_CURRENT_USER\Identities\ zu finden ist, ist die Windows UserID und hat normalerweise folgendes Format {12345678-1234-1234-1234-123456789AB}.

    ja!!

    Code
    $UserID = RegRead ("HKEY_CURRENT_USER\Identities\","Default User ID")
    	MsgBox(0,"UserID","Hallo, deine userID ist:" & @LF & @LF & $UserID)

    Doktore

  • oder meinst du den ersten schlüssel "S-1-5-21-823518204-606747145-839522115-1003" im script????

    den muss man natürlich auch mit seinen erstezen.
    das ist er:

    Code
    $var = RegEnumKey("HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider", 1)
    MsgBox(4096, "First SubKey under HKLM\Software: ", $var)

    Doktore

    • Offizieller Beitrag

    Hallo,

    ich meine schon die UserID, im ersten Script hängst du die Variable an, deren Wet folgendes Format hat:

    {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

    und in zweite Script steht dann:

    ...\Outlook\9375CFF0413111d3B88A00104B2A6676

  • Hi,
    oh Mann, User-ID's gehen mit Scriptomatic viel einfacher siehe:
    GetSID, jetzt aber wirklich.. :D
    btw:
    Registry-Schlüssel packe ich meistens in Const-Anweisungen, dann bleiben die
    Funktions-Aufrufe schön übersichtlich..
    Und werden die Const's klug gewählt, läßt sich da auch immer noch was anhaängen..
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Zitat

    Original von bernd670
    Hallo,

    ich meine schon die UserID, im ersten Script hängst du die Variable an, deren Wet folgendes Format hat:

    {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

    und in zweite Script steht dann:

    ...\Outlook\9375CFF0413111d3B88A00104B2A6676

    hehe bernd670 , du bist ein alter fuchs!!!
    die anderen natürlich auch :)

    ja du hast recht!!! :klatschen:
    ich lasse mir gerade das alles mal durch den kopf gehen und merke, lol ich brauche die UserID hier ja gar nicht.
    da habe ich vor lauter klammern setzen zwei scripte mit eineinder gemischt bzw. vertauscht :evil:

    so ist es io, es gehen beide run's :) :party4:

    Code
    $var = RegEnumKey("HKEY_CURRENT_USER\Software\Microsoft\Protected Storage System Provider", 1)
    $hz = '"HKEY_USERS\' & $var & '\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676" ' & @WorkingDir & '\konten.reg'
    MsgBox(0,"",$hz)
    Run('cmd /C reg export "HKEY_USERS\' & $var & '\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676" ' & @WorkingDir & '\konten.reg')
    Run('cmd /C reg export ' & $hz)

    Doktore

  • ähhh, was soll das script den genau machen???
    bei mir kommt nur einen msg box mit "Piii1k ist nicht im Netz.."

    Doktore

  • Wieso heißt deiner auch Piii1k?
    Moment, das schau ich mir mal an..

    [Edit]
    ..wieso, wenn dein Rechner nicht "Piii1k" heißt, arbeitet das Skript doch richtig :rofl:
    Im Ernst:
    Der Funktionsaufruf von myGetSID lautet:

    Code
    myGetSID("Gast", "Piii1k", True))

    Wobei
    "Gast" durch den gesuchten Usernamen ersetzt werden muß
    "Piii1k" durch den gewünschten RechnerNamen
    True gibt an, daß nur ein User gesucht werden soll
    (False würde alle Accounts ausgeben..)
    Das Skript soll nur den Funktionsaufruf demonstrieren.
    Die Func myGetSID(..) ist eher für den Einbau in eigene (GUI-)Skripte gedacht.

    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

    2 Mal editiert, zuletzt von ytwinky (20. Mai 2006 um 16:11)