Programm als Admin ausführen mit eingeschränkten Rechten

  • Um ein Script auch bei allen Nutzern mit Admin Priviliges ausgeführt zu haben ist es durchaus Möglich dieses Script als Aufgabe in das System einzugeben. Ich habe hier eine mehrteilige Funktion mit der du automatisch bei jedem Nutzer auf dem Computer das eigene Program einträgst das beim Anmelden mit ausgeführt wird. Du könntest die Funktion so umschreiben das sie tatsächlich nur per Verknüpfung ausgeführt wird.

    Achso und wenn du sie tatsächlich verwendest dann schreibe bitte mit dazu von wo du sie hast. Würde keinen guten eindruck machen wenn der IT chef herrausfindet das die Funktionen Copy&Paste sind und ohne den autor zu nennen. :)

  • Candyland

    Globale Variablen sollten möglichst nicht in einer Funktion deklariert werden und wenn du dir ein Filehandle besorgst, dann musst du es auch wieder freigeben, auch wenn du nicht schreiben konntest.

  • Globale Variablen sollten möglichst nicht in einer Funktion deklariert werden und wenn du dir ein Filehandle besorgst, dann musst du es auch wieder freigeben, auch wenn du nicht schreiben konntest.

    Ja richtig nur war diese Funktion noch keiner UDF zugeordnet daher wollte ich diese Global's ersteinmal in der Funktion drinnen haben :)

    Ich sehe nicht wo ich hier ein Filehandle nicht freigegeben habe, meines erachtens nach ist hier jedes Handle sauber nach nutzung wieder Geschlossen worden

  • Ja richtig nur war diese Funktion noch keiner UDF zugeordnet daher wollte ich diese Global's ersteinmal in der Funktion drinnen haben

    Weil? Wie der Name schon sagt... Global... gehört in den globalen Bereich... nicht in eine Funktion. ,-)

    Ich sehe nicht wo ich hier ein Filehandle nicht freigegeben habe, meines erachtens nach ist hier jedes Handle sauber nach nutzung wieder Geschlossen worden

    Hier...

    AutoIt
        $h_xml = FileOpen($fSaveTo, 2)
        if $h_xml = -1 Then Return False
        $w_xml = FileWrite($h_xml, $sBinXML)
        if $w_xml = 0 Then Return False      ; <-- Genau hier... das Filehandle muss vor dem Return False freigegeben werden.
        FileClose($h_xml)

    So wäre es korrekt...

    AutoIt
    $h_xml = FileOpen($fSaveTo, 2)
        if $h_xml = -1 Then Return False
        $w_xml = FileWrite($h_xml, $sBinXML)
        FileClose($h_xml)
        if $w_xml = 0 Then Return False

    Ich mache das gerne so... was aber übrigens wenig Sinn macht, wenn du bei FileOpen nur $FO_OVERWRITE als Flag angibst...

    AutoIt
    Local $sPath = '.\Blablabla.txt', $hFile = FileOpen($sPath, $FO_OVERWRITE)
    Local $iWrite = FileWrite($hFile, 'Quakquack') + FileClose($hFile) ? FileGetSize($sPath) : -1
    If $iWrite < 1 Then Return False

    dann kannst du dir das FileOpen auch sparen...

    AutoIt
    Local $sPath = '.\Blablabla.txt', $iWrite = FileDelete($sPath) + FileWrite($sPath, 'Quakquack')
    If $iWrite < 1 Then Return False

    Zudem finde ich es nicht sehr fein, wenn Variablen nicht deklariert (Local/Global) werden... und Dim sollte eigentlich nicht mehr verwendet werden.


    For $aUser In $objDomain

    Wieso $aUser? Bei For in... wird kein Array geliefert.

    2 Mal editiert, zuletzt von Bitnugger (11. Mai 2018 um 19:25)

  • und Dim sollte eigentlich nicht mehr verwendet werden

    Ich kenne einen Anwendungsfall für den Dim Sinn macht: Wenn eine Variable von einer Funktion als Array befüllt werden soll (per ByRef übergeben) aber diese nicht explizit schon ein Array sein muss: