Schriften unattended deinstallieren

  • Hat von Euch schonmal jemand Schriften von Windows mithilfe von AutoIt oder ähnlichem deinstallieren lassen ?
    Ich bräuchte ein Script, mit dem ich das tun kann und das auch funktioniert, wenn die User keine Adminrechte haben.

    Ich habe da schon etwas gebastelt, das aber leider nicht funktioniert.
    Vielleicht hat ja jemand von Euch 'ne Idee ?!

    [autoit]

    Local $workingdir = "\\MeinServer\Info\Schrift\"
    Local $UserName = "sa_domainadminaccount"
    Local $Password = "password"

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

    Local $Script = RegDelete("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts" & "/v", "Schrift1.otf" & "/f")
    Local $Script1 = RegDelete("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts", "Schrift2.otf")
    Local $Script2 = RegDelete("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts", "Schrift3.otf")
    Local $CompleteScript = $Script & $Script1 & $Script2

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

    MsgBox(0,"Deinstallationsstart", "Die Schriften werden nun von Ihrem System entfernt.")
    RunAs($UserName, "MeineDomain",$Password, 0, $CompleteScript, $workingdir)

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

    FileDelete ("C:\Windows\Fonts\Schrift*.*")
    sleep(2000)

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

    If FileExists("C:\Windows\Fonts\Schrift*.*") Then
    MsgBox(0,"Fehler !", "Die Deinstallation der Schriften schlug fehl. Bitte wenden Sie sich an den Support !")
    Else
    MsgBox(0,"Installationsabschluss", "Die Schriftarten wurden erfolgreich deinstalliert.")
    EndIf

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

    Exit

    [/autoit]
  • Moin,

    ungetestet, sollte aber was gehen ... ;)

    Spoiler anzeigen
    [autoit]

    ;
    Global Const $HWND_BROADCAST = 0xffff
    Global Const $WM_FONTCHANGE = 0x001d

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

    ;...

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

    ; Schrift(en) dem System hinzufügen.
    AddFontResource ("Schrift1.otf|Schrift2.otf|Schrift3.otf")

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

    ; Schrift vom System entfernen.
    $bResult = RemoveFontResource ("Schrift1.otf")

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

    ; Nun müssen wir alle Top-Level Fenster darüber informieren,
    ; dass wir die Schrift entfernt haben !
    SendMessage ($HWND_BROADCAST, _
    $WM_FONTCHANGE, _
    0, 0)
    ; ...

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

    Func AddFontResource ($lpszFilename)

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

    Local $aRes = DllCall ('gdi32.dll', 'int', 'AddFontResourceW', _
    'wstr', $lpszFilename) ; font file name
    If @error Then _
    Return @error

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

    Return $aRes[0]

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

    EndFunc

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

    Func RemoveFontResource ($lpFileName)

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

    Local $aRes = DllCall ('gdi32.dll', 'int', 'RemoveFontResourceW', _
    'wstr', $lpFileName) ; name of font file
    If @error Then _
    Return @error

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

    Return $aRes[0]

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

    EndFunc

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

    Func SendMessage ($hWnd, $Msg, $wParam, $lParam)

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

    Local $aRes = DllCall ('user32.dll', 'ulong', 'SendMessageW', _
    'hwnd', $hWnd, _
    'uint', $Msg, _
    'wparam', $wParam, _
    'lparam', $lParam)
    If @error Then _
    Return @error

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

    Return $aRes[0]

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

    EndFunc
    ;

    [/autoit]


    Gruß
    Greenhorn