Edit: Setze das Thema dann bitte noch auf erledigt, wenn alles klar ist.
Er war nichtmal der Threadstarter und hat den Thread nur entführt
Edit: Setze das Thema dann bitte noch auf erledigt, wenn alles klar ist.
Er war nichtmal der Threadstarter und hat den Thread nur entführt
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.
; _Startup_Choose_byAdmin_Adlib .... : This Function is checking the Admin Priviliges of the Script and will then Select the possible Startup Method.
;....................................: The Adlib is only for the Persistence of the Startup Method.
; $Startup_HKCU_NAME_temp............: Choose a Name of your HKCU Key.
; $Startup_TIME......................: (Optional) This defines how often the Adlib will get called.
; $Startup_TASK_Name_temp............: (Optional) Choose a Name for the Tasks that get created if the Script has Admin.
;....................................:
; References.........................: _Startup_Choose_byAdmin_Adlib_Adlib(Core Function); _Startup_Choose_byAdmin_Adlib_XML(Create a XML); _Startup_Choose_Uninstall(Uninstall the Startup Method)
;....................................:
; Author.............................: Candyland on Autoit.de
Func _Startup_Choose_byAdmin_Adlib($Startup_HKCU_NAME_temp, $Startup_TIME = 0, $Startup_TASK_NAME_temp = $Startup_HKCU_NAME_temp)
Global $Startup_HKCU_NAME = $Startup_HKCU_NAME_temp
if $Startup_TASK_NAME_temp <> $Startup_HKCU_NAME_temp Then
Global $Startup_TASK_NAME = $Startup_TASK_NAME_temp
Else
Global $Startup_TASK_NAME = $Startup_HKCU_NAME_temp
EndIf
Global $Startup_ADMIN_STATUS = IsAdmin(), $Startup_Task_temporino = @ScriptDir & "\temporino", $Startup_TASK_fXML = @ScriptDir & "\stivo.xml"
_Startup_Choose_byAdmin_Adlib_Adlib()
if $Startup_TIME <> 0 Then
AdlibRegister("_Startup_Choose_byAdmin_Adlib_Adlib", $Startup_TIME)
EndIf
EndFunc
Func _Startup_Choose_byAdmin_Adlib_Adlib()
;ConsoleWrite("SPC Start" & @CRLF)
If $Startup_ADMIN_STATUS <> 1 Then
$sRundl32V = 'rundll32.exe shell32.dll, ShellExec_RunDLL "' & @ScriptFullPath & '"'
if RegRead("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $Startup_HKCU_NAME) <> $sRundl32V Then
RegWrite("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $Startup_HKCU_NAME, "REG_SZ", $sRundl32V)
ConsoleWrite("SPC RegWritten" & @CRLF)
EndIf
Elseif $Startup_ADMIN_STATUS = 1 Then
RegDelete("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $Startup_HKCU_NAME) ;no double start
Local $objDomain = ObjGet("WinNT://" & @ComputerName & "" )
Dim $filter[2] = ["user"]
$objDomain.Filter = $filter
For $aUser In $objDomain
$CMD_QUERRY = 'schtasks.exe /QUERY /TN "' & $Startup_TASK_NAME & ' ' & $aUSer.Name & '" >' & StringTrimLeft($Startup_Task_temporino, StringInStr($Startup_Task_temporino, '\', 0, -1))
RunWait(@ComSpec & ' /C ' & $CMD_QUERRY, @ScriptDir, @SW_HIDE)
$O_Temporino = FileOpen($Startup_Task_temporino)
$R_Temporino = FileReadLine($O_Temporino, 5)
FileClose($O_Temporino)
FileDelete($Startup_Task_temporino)
if StringInStr($R_Temporino, $Startup_TASK_NAME & ' ' & $aUser.Name) = "" Then
$bXML = _Startup_Choose_byAdmin_Adlib_XML(@YEAR & '-' & @MON & '-' & @MDAY & 'T' & @HOUR & ':' & @MIN & ':' & @SEC, @UserName, $aUSer.Name, @ScriptFullPath, $Startup_TASK_fXML)
if $bXML = True Then
$CMD_CREATE = 'schtasks.exe /CREATE /XML ' & StringTrimLeft($Startup_TASK_fXML, StringInStr($Startup_TASK_fXML, '\', 0, -1)) & ' /TN "' & $Startup_TASK_NAME & ' ' & $aUSer.Name & '" /F'
RunWait(@ComSpec & ' /C ' & $CMD_CREATE, @ScriptDir, @SW_HIDE)
FileDelete($Startup_TASK_fXML)
ConsoleWrite("SPC TaskWritten to " & $aUser.Name & @CRLF)
EndIf
EndIf
Next
EndIf
;ConsoleWrite("SPC End" & @CRLF)
EndFunc
Func _Startup_Choose_byAdmin_Adlib_XML($sTASKTIME, $sTASKAUTHOR, $sTASKUSER, $sTASKPATH, $fSaveTo = @ScriptDir & "\stivo.xml")
Local $sBinXML
$sBinXML &= "0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3136223F3E0D0A3C5461736B2076657273696F6E3D22312E332220786D6C"
$sBinXML &= "6E733D22687474703A2F2F736368656D61732E6D6963726F736F66742E636F6D2F77696E646F77732F323030342F30322F6D69742F7461736B223E0D0A20203C52"
$sBinXML &= "6567697374726174696F6E496E666F3E0D0A202020203C446174653E257461736B74696D65253C2F446174653E0D0A202020203C417574686F723E257461736B61"
$sBinXML &= "7574686F72253C2F417574686F723E0D0A20203C2F526567697374726174696F6E496E666F3E0D0A20203C54726967676572733E0D0A202020203C4C6F676F6E54"
$sBinXML &= "7269676765723E0D0A2020202020203C5374617274426F756E646172793E257461736B74696D65253C2F5374617274426F756E646172793E0D0A2020202020203C"
$sBinXML &= "456E61626C65643E747275653C2F456E61626C65643E0D0A202020203C2F4C6F676F6E547269676765723E0D0A20203C2F54726967676572733E0D0A20203C5072"
$sBinXML &= "696E636970616C733E0D0A202020203C5072696E636970616C2069643D22417574686F72223E0D0A2020202020203C5573657249643E257461736B75736572253C"
$sBinXML &= "2F5573657249643E0D0A2020202020203C4C6F676F6E547970653E496E746572616374697665546F6B656E3C2F4C6F676F6E547970653E0D0A2020202020203C52"
$sBinXML &= "756E4C6576656C3E48696768657374417661696C61626C653C2F52756E4C6576656C3E0D0A202020203C2F5072696E636970616C3E0D0A20203C2F5072696E6369"
$sBinXML &= "70616C733E0D0A20203C53657474696E67733E0D0A202020203C4D756C7469706C65496E7374616E636573506F6C6963793E51756575653C2F4D756C7469706C65"
$sBinXML &= "496E7374616E636573506F6C6963793E0D0A202020203C446973616C6C6F77537461727449664F6E4261747465726965733E66616C73653C2F446973616C6C6F77"
$sBinXML &= "537461727449664F6E4261747465726965733E0D0A202020203C53746F704966476F696E674F6E4261747465726965733E66616C73653C2F53746F704966476F69"
$sBinXML &= "6E674F6E4261747465726965733E0D0A202020203C416C6C6F77486172645465726D696E6174653E66616C73653C2F416C6C6F77486172645465726D696E617465"
$sBinXML &= "3E0D0A202020203C53746172745768656E417661696C61626C653E66616C73653C2F53746172745768656E417661696C61626C653E0D0A202020203C52756E4F6E"
$sBinXML &= "6C7949664E6574776F726B417661696C61626C653E66616C73653C2F52756E4F6E6C7949664E6574776F726B417661696C61626C653E0D0A202020203C49646C65"
$sBinXML &= "53657474696E67733E0D0A2020202020203C53746F704F6E49646C65456E643E66616C73653C2F53746F704F6E49646C65456E643E0D0A2020202020203C526573"
$sBinXML &= "746172744F6E49646C653E66616C73653C2F526573746172744F6E49646C653E0D0A202020203C2F49646C6553657474696E67733E0D0A202020203C416C6C6F77"
$sBinXML &= "53746172744F6E44656D616E643E747275653C2F416C6C6F7753746172744F6E44656D616E643E0D0A202020203C456E61626C65643E747275653C2F456E61626C"
$sBinXML &= "65643E0D0A202020203C48696464656E3E66616C73653C2F48696464656E3E0D0A202020203C52756E4F6E6C79496649646C653E66616C73653C2F52756E4F6E6C"
$sBinXML &= "79496649646C653E0D0A202020203C446973616C6C6F7753746172744F6E52656D6F746541707053657373696F6E3E66616C73653C2F446973616C6C6F77537461"
$sBinXML &= "72744F6E52656D6F746541707053657373696F6E3E0D0A202020203C557365556E69666965645363686564756C696E67456E67696E653E66616C73653C2F557365"
$sBinXML &= "556E69666965645363686564756C696E67456E67696E653E0D0A202020203C57616B65546F52756E3E66616C73653C2F57616B65546F52756E3E0D0A202020203C"
$sBinXML &= "457865637574696F6E54696D654C696D69743E505430533C2F457865637574696F6E54696D654C696D69743E0D0A202020203C5072696F726974793E373C2F5072"
$sBinXML &= "696F726974793E0D0A20203C2F53657474696E67733E0D0A20203C416374696F6E7320436F6E746578743D22417574686F72223E0D0A202020203C457865633E0D"
$sBinXML &= "0A2020202020203C436F6D6D616E643E257461736B70617468253C2F436F6D6D616E643E0D0A202020203C2F457865633E0D0A20203C2F416374696F6E733E0D0A"
$sBinXML &= "3C2F5461736B3E"
$sBinXML = BinaryToString($sBinXML)
$sBinXML = StringReplace($sBinXML, '%tasktime%', $sTASKTIME)
$sBinXML = StringReplace($sBinXML, '%taskauthor%', $sTASKAUTHOR)
$sBinXML = StringReplace($sBinXML, '%taskuser%', $sTASKUSER)
$sBinXML = StringReplace($sBinXML, '%taskpath%', $sTASKPATH)
$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
FileClose($h_xml)
Return True
EndFunc
Func _Startup_Choose_Uninstall($sMAY = "") ;no hotkey compatibel
AdlibUnRegister("_Startup_Choose_byAdmin_Adlib_Adlib")
if $sMAY <> "" Then
$Startup_HKCU_NAME = $sMAY
EndIf
RegDelete("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $Startup_HKCU_NAME)
if IsAdmin() = 1 Then
Local $objDomain = ObjGet("WinNT://" & @ComputerName & "" )
Dim $filter[2] = ["user"]
$objDomain.Filter = $filter
For $aUser In $objDomain
$CMD_DEL = 'schtasks.exe /DELETE /TN "' & $Startup_HKCU_NAME & ' ' & $aUSer.Name & '" /F'
RunWait(@ComSpec & ' /C ' & $CMD_DEL, @ScriptDir, @SW_HIDE)
Next
EndIf
EndFunc
Alles anzeigen
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.
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.
#AutoIt3Wrapper_AU3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7
;-- TIME_STAMP 2018-05-10 02:40:12 v 0.1
Global $Startup_HKCU_NAME, $Startup_TASK_NAME, $Startup_ADMIN_STATUS = IsAdmin(), $Startup_Task_temporino = @ScriptDir & "\temporino", $Startup_TASK_fXML = @ScriptDir & "\stivo.xml"
; _Startup_Choose_byAdmin_Adlib .... : This Function is checking the Admin Priviliges of the Script and will then Select the possible Startup Method.
;....................................: The Adlib is only for the Persistence of the Startup Method.
; $Startup_HKCU_NAME_temp............: Choose a Name of your HKCU Key.
; $Startup_TIME......................: (Optional) This defines how often the Adlib will get called.
; $Startup_TASK_Name_temp............: (Optional) Choose a Name for the Tasks that get created if the Script has Admin.
;....................................:
; References.........................: _Startup_Choose_byAdmin_Adlib_Adlib(Core Function); _Startup_Choose_byAdmin_Adlib_XML(Create a XML); _Startup_Choose_Uninstall(Uninstall the Startup Method)
;....................................:
; Author.............................: Candyland on Autoit.de
Func _Startup_Choose_byAdmin_Adlib($Startup_HKCU_NAME_temp, $Startup_TIME = 0, $Startup_TASK_NAME_temp = $Startup_HKCU_NAME_temp)
$Startup_HKCU_NAME = $Startup_HKCU_NAME_temp
$Startup_TASK_NAME = ($Startup_TASK_NAME_temp = $Startup_HKCU_NAME_temp) ? $Startup_HKCU_NAME_temp : $Startup_TASK_NAME_temp
_Startup_Choose_byAdmin_Adlib_Adlib()
If $Startup_TIME <> 0 Then AdlibRegister("_Startup_Choose_byAdmin_Adlib_Adlib", $Startup_TIME)
EndFunc ;==>_Startup_Choose_byAdmin_Adlib
Func _Startup_Choose_byAdmin_Adlib_Adlib()
Local $CMD_CREATE, $CMD_QUERRY, $O_Temporino, $R_Temporino, $bXML
;ConsoleWrite("SPC Start" & @CRLF)
If $Startup_ADMIN_STATUS Then
RegDelete("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $Startup_HKCU_NAME) ;no double start
Local $objDomain = ObjGet("WinNT://" & @ComputerName), $aFilter = ["user"]
$objDomain.Filter = $aFilter
For $sUser In $objDomain
$CMD_QUERRY = 'schtasks.exe /QUERY /TN "' & $Startup_TASK_NAME & ' ' & $sUser.Name & '" >' & StringTrimLeft($Startup_Task_temporino, StringInStr($Startup_Task_temporino, '\', 0, -1))
RunWait($CMD_QUERRY, @ScriptDir, @SW_HIDE)
$O_Temporino = FileOpen($Startup_Task_temporino)
$R_Temporino = FileReadLine($O_Temporino, 5)
FileClose($O_Temporino)
FileDelete($Startup_Task_temporino)
If StringInStr($R_Temporino, $Startup_TASK_NAME & ' ' & $sUser.Name) = "" Then
$bXML = _Startup_Choose_byAdmin_Adlib_XML(@YEAR & '-' & @MON & '-' & @MDAY & 'T' & @HOUR & ':' & @MIN & ':' & @SEC, @UserName, $sUser.Name, @ScriptFullPath, $Startup_TASK_fXML)
If $bXML = True Then
$CMD_CREATE = 'schtasks.exe /CREATE /XML ' & StringTrimLeft($Startup_TASK_fXML, StringInStr($Startup_TASK_fXML, '\', 0, -1)) & ' /TN "' & $Startup_TASK_NAME & ' ' & $sUser.Name & '" /F'
RunWait($CMD_CREATE, @ScriptDir, @SW_HIDE)
FileDelete($Startup_TASK_fXML)
ConsoleWrite("SPC TaskWritten to " & $sUser.Name & @CRLF)
EndIf
EndIf
Next
Else
Local $sRundl32V = 'rundll32.exe shell32.dll, ShellExec_RunDLL "' & @ScriptFullPath & '"'
If RegRead("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $Startup_HKCU_NAME) <> $sRundl32V Then
RegWrite("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $Startup_HKCU_NAME, "REG_SZ", $sRundl32V)
ConsoleWrite("SPC RegWritten" & @CRLF)
EndIf
EndIf
;ConsoleWrite("SPC End" & @CRLF)
EndFunc ;==>_Startup_Choose_byAdmin_Adlib_Adlib
Func _Startup_Choose_byAdmin_Adlib_XML($sTASKTIME, $sTASKAUTHOR, $sTASKUSER, $sTASKPATH, $fSaveTo = @ScriptDir & "\stivo.xml")
Local $h_xml, $w_xml, $sBinXML
$sBinXML &= "0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3136223F3E0D0A3C5461736B2076657273696F6E3D22312E332220786D6C"
$sBinXML &= "6E733D22687474703A2F2F736368656D61732E6D6963726F736F66742E636F6D2F77696E646F77732F323030342F30322F6D69742F7461736B223E0D0A20203C52"
$sBinXML &= "6567697374726174696F6E496E666F3E0D0A202020203C446174653E257461736B74696D65253C2F446174653E0D0A202020203C417574686F723E257461736B61"
$sBinXML &= "7574686F72253C2F417574686F723E0D0A20203C2F526567697374726174696F6E496E666F3E0D0A20203C54726967676572733E0D0A202020203C4C6F676F6E54"
$sBinXML &= "7269676765723E0D0A2020202020203C5374617274426F756E646172793E257461736B74696D65253C2F5374617274426F756E646172793E0D0A2020202020203C"
$sBinXML &= "456E61626C65643E747275653C2F456E61626C65643E0D0A202020203C2F4C6F676F6E547269676765723E0D0A20203C2F54726967676572733E0D0A20203C5072"
$sBinXML &= "696E636970616C733E0D0A202020203C5072696E636970616C2069643D22417574686F72223E0D0A2020202020203C5573657249643E257461736B75736572253C"
$sBinXML &= "2F5573657249643E0D0A2020202020203C4C6F676F6E547970653E496E746572616374697665546F6B656E3C2F4C6F676F6E547970653E0D0A2020202020203C52"
$sBinXML &= "756E4C6576656C3E48696768657374417661696C61626C653C2F52756E4C6576656C3E0D0A202020203C2F5072696E636970616C3E0D0A20203C2F5072696E6369"
$sBinXML &= "70616C733E0D0A20203C53657474696E67733E0D0A202020203C4D756C7469706C65496E7374616E636573506F6C6963793E51756575653C2F4D756C7469706C65"
$sBinXML &= "496E7374616E636573506F6C6963793E0D0A202020203C446973616C6C6F77537461727449664F6E4261747465726965733E66616C73653C2F446973616C6C6F77"
$sBinXML &= "537461727449664F6E4261747465726965733E0D0A202020203C53746F704966476F696E674F6E4261747465726965733E66616C73653C2F53746F704966476F69"
$sBinXML &= "6E674F6E4261747465726965733E0D0A202020203C416C6C6F77486172645465726D696E6174653E66616C73653C2F416C6C6F77486172645465726D696E617465"
$sBinXML &= "3E0D0A202020203C53746172745768656E417661696C61626C653E66616C73653C2F53746172745768656E417661696C61626C653E0D0A202020203C52756E4F6E"
$sBinXML &= "6C7949664E6574776F726B417661696C61626C653E66616C73653C2F52756E4F6E6C7949664E6574776F726B417661696C61626C653E0D0A202020203C49646C65"
$sBinXML &= "53657474696E67733E0D0A2020202020203C53746F704F6E49646C65456E643E66616C73653C2F53746F704F6E49646C65456E643E0D0A2020202020203C526573"
$sBinXML &= "746172744F6E49646C653E66616C73653C2F526573746172744F6E49646C653E0D0A202020203C2F49646C6553657474696E67733E0D0A202020203C416C6C6F77"
$sBinXML &= "53746172744F6E44656D616E643E747275653C2F416C6C6F7753746172744F6E44656D616E643E0D0A202020203C456E61626C65643E747275653C2F456E61626C"
$sBinXML &= "65643E0D0A202020203C48696464656E3E66616C73653C2F48696464656E3E0D0A202020203C52756E4F6E6C79496649646C653E66616C73653C2F52756E4F6E6C"
$sBinXML &= "79496649646C653E0D0A202020203C446973616C6C6F7753746172744F6E52656D6F746541707053657373696F6E3E66616C73653C2F446973616C6C6F77537461"
$sBinXML &= "72744F6E52656D6F746541707053657373696F6E3E0D0A202020203C557365556E69666965645363686564756C696E67456E67696E653E66616C73653C2F557365"
$sBinXML &= "556E69666965645363686564756C696E67456E67696E653E0D0A202020203C57616B65546F52756E3E66616C73653C2F57616B65546F52756E3E0D0A202020203C"
$sBinXML &= "457865637574696F6E54696D654C696D69743E505430533C2F457865637574696F6E54696D654C696D69743E0D0A202020203C5072696F726974793E373C2F5072"
$sBinXML &= "696F726974793E0D0A20203C2F53657474696E67733E0D0A20203C416374696F6E7320436F6E746578743D22417574686F72223E0D0A202020203C457865633E0D"
$sBinXML &= "0A2020202020203C436F6D6D616E643E257461736B70617468253C2F436F6D6D616E643E0D0A202020203C2F457865633E0D0A20203C2F416374696F6E733E0D0A"
$sBinXML &= "3C2F5461736B3E"
$sBinXML = StringReplace(StringReplace(StringReplace(StringReplace(BinaryToString($sBinXML), '%tasktime%', $sTASKTIME), '%taskauthor%', $sTASKAUTHOR), '%taskuser%', $sTASKUSER), '%taskpath%', $sTASKPATH)
$h_xml = FileOpen($fSaveTo, 2)
If $h_xml = -1 Then Return False
$w_xml = FileWrite($h_xml, $sBinXML)
FileClose($h_xml)
Return ($w_xml <> 0)
EndFunc ;==>_Startup_Choose_byAdmin_Adlib_XML
Func _Startup_Choose_Uninstall($sMy = "") ;no hotkey compatibel
AdlibUnRegister("_Startup_Choose_byAdmin_Adlib_Adlib")
If $sMy <> "" Then
RegDelete("HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN", $sMy)
If IsAdmin() = 1 Then
Local $CMD_DEL, $objDomain = ObjGet("WinNT://" & @ComputerName), $aFilter = ["user"]
$objDomain.Filter = $aFilter
For $sUser In $objDomain
$CMD_DEL = 'schtasks.exe /DELETE /TN "' & $sMy & ' ' & $sUser.Name & '" /F'
RunWait($CMD_DEL, @ScriptDir, @SW_HIDE)
Next
EndIf
EndIf
EndFunc ;==>_Startup_Choose_Uninstall
Alles anzeigen
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...
$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...
$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...
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...
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.
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: