Username2Office

  • Hey,

    es ist zwar ein recht simples Skript, aber ich glaube, dass es nun vollkommen an meine bedüfnisse angepasst wurde.

    das script ist da sinnvoll, wo mehrere leute im netzwerk auf office-dateien zugreifen. damit man weiss, wer die aktuelle datei sperrt, trägt das script den usernamen in die registry ein, aus der office nun seine benutzerinformationen bezieht.

    das script wurde mit hilfe von einigen autoit-profis hier auf dem board erstellt =)

    es ist für windows gedacht (2k und xp sollte 100% unterstützt werden) und nicht auf eine bestimmte office-version zugeschnitten.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ;
    ;Username 2 Office V.3
    ;
    ;
    ;© sc4ry
    ;

    [/autoit] [autoit][/autoit] [autoit]

    #include <string.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Überprüfe Systemsprache
    If @KBLayout = 0407 then

    [/autoit] [autoit][/autoit] [autoit]

    ;Deutsch
    ;Msgbox INFO
    MsgBox(0, "Username 2 Office V.3 by sc4ry", "Dieses Script trägt Ihre UserID in die MS Office Benutzerinformationen ein", 4)

    ;Usernamen in Hex wandeln
    WinWaitNotActive("Username 2 Office V.3 by sc4ry")
    $String = (@username)
    $Hex = _StringToHex($String)
    $RegHex = ""
    For $i = 1 To Stringlen($Hex) Step 2
    $RegHex &= StringMid($Hex,$i,2) & "00"
    Next
    $RegHex &= "0000"

    ;Registry-Pfad ermitteln
    $instance = 1
    While 1
    $strRegKey = RegEnumKey("HKCU\Software\Microsoft\Office\",$instance)
    If @error <> 0 Then ExitLoop
    $instance += 1

    $read = RegRead("HKCU\Software\Microsoft\Office\" & $strRegKey & "\Common\Userinfo", "Username")
    If @error <> 0 Then ContinueLoop

    ;Schreibe Usernamen in Registry
    RegWrite("HKCU\Software\Microsoft\Office\" & $strRegKey & "\Common\Userinfo", "UserName", "Reg_Binary", $RegHex )

    ;Überprüfe Username
    $read = RegRead("HKCU\Software\Microsoft\Office\" & $strRegKey & "\Common\Userinfo", "Username")
    if $read = $RegHex Then
    MsgBox(64, "Erfolgreich", "UserID korrekt in MS Office übernommen", 4)
    Else
    MsgBox(16, "Warnung", "UserID nicht korrekt in MS Office übernommen, bitte wenden Sie sich an sc4ry")
    EndIf
    Wend

    Else

    ;Englisch
    ;Msgbox INFO
    MsgBox(0, "Username 2 Office V.3 by sc4ry", "This Script copies your UserID to the MS Office Userinfo", 4)

    ;Usernamen in Hex wandeln
    WinWaitNotActive("Username 2 Office V.3 by sc4ry")
    $String = (@username)
    $Hex = _StringToHex($String)
    $RegHex = ""
    For $i = 1 To Stringlen($Hex) Step 2
    $RegHex &= StringMid($Hex,$i,2) & "00"
    Next
    $RegHex &= "0000"

    ;Registry-Pfad ermitteln
    $instance = 1
    While 1
    $strRegKey = RegEnumKey("HKCU\Software\Microsoft\Office\",$instance)
    If @error <> 0 Then ExitLoop
    $instance += 1

    $read = RegRead("HKCU\Software\Microsoft\Office\" & $strRegKey & "\Common\Userinfo", "Username")
    If @error <> 0 Then ContinueLoop

    ;Schreibe Usernamen in Registry
    RegWrite("HKCU\Software\Microsoft\Office\" & $strRegKey & "\Common\Userinfo", "UserName", "Reg_Binary", $RegHex )

    ;Überprüfe Username
    $read = RegRead("HKCU\Software\Microsoft\Office\" & $strRegKey & "\Common\Userinfo", "Username")
    if $read = $RegHex Then
    MsgBox(64, "Successful", "UserID was written successfully to the MS Office Userinfo", 4)
    Else
    MsgBox(16, "Warning", "UserID could not be written to the MS Office Userinfo, please contact sc4ry")
    EndIf
    Wend

    EndIf

    [/autoit]

    PS: Version 3 reagiert auf ein deutsches Tastaturlayout, zeigt ansonsten die meldungen in englisch an.