1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Mahagon

Beiträge von Mahagon

  • WMI Abfragen mit Variablen

    • Mahagon
    • 3. November 2010 um 18:50

    Hier einmal ein Beispiel :)

    Spoiler anzeigen
    [autoit]

    #cs
    This UDF is made for using the Windows Management Instrumentation in AutoIt V.3
    The content of this work is licensed under Creative Commons license.
    Der Inhalt dieses Werkes ist lizensiert unter der Creative Commons Lizenz.
    #ce

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

    ; Last Change 18.05.2010
    ; Infos und Beispiele sind unter http://mahagon-autoit.spaces.live.com/?_c11_BlogPart…UserAccount.au3 zu finden

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

    ;BEISPIEL _______________________________________________________
    $aReturn = _WinWMI_UserAccount_GetInformation("Name,Domain")
    For $i = 0 To UBound($aReturn) - 1
    ConsoleWrite("Benutzername: " & $aReturn[$i][0] & @CRLF & "Domain: " & $aReturn[$i][1] & @CRLF & @CRLF)
    Next

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

    ;END BEISPIEL ___________________________________________________

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

    ; #INDEX# =========================================================================================
    ; Win32_UserAccount Functions
    ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ; _WinWMI_UserAccount_GetInformation()
    ; _WinWMI_UserAccount_SetName()
    ; _WinWMI_UserAccount_SetDisabled()
    ; _WinWMI_UserAccount_SetFullname()
    ; _WinWMI_UserAccount_SetLockout()
    ; _WinWMI_UserAccount_SetPasswordChangeable()
    ; _WinWMI_UserAccount_SetPasswordExpires()
    ; _WinWMI_UserAccount_SetPasswordRequired()
    ; =================================================================================================

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_GetInformation()
    ; Description ......: Returns requested Userinformation in a 2D Array
    ; Syntax ...........: _WinWMI_UserAccount_GetInformation(Const[ $sFields = "Name",Const[ $sUser = "%",Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sFields - [optional] Userinformation seperated by comma (default:"Name")
    ; $sUser - [optional] Users seperated by comma (default:"%")
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - requested Userinformation in a 2D Array
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches found
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_GetInformation( [ "Fieldnames" [, "Username" [, "Target Computer"]]] ) Returns requested Userinformation in a 2D Array ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_GetInformation(Const $sFields = "Name", $sUser = "%", Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $sUser = StringReplace($sUser, ",", "' Or Name LIKE '")
    $oList = $oWMI.ExecQuery("SELECT " & $sFields & " FROM Win32_UserAccount WHERE Name LIKE '" & $sUser & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    $aFields = StringSplit($sFields, ",", 2)
    If $oList.Count = 0 Then Return SetError(-3, @error, 0)
    Local $aReturn[$oList.Count][UBound($aFields)]
    $iCount = 0
    For $oItem In $oList
    With $oItem
    For $iFields = 0 To UBound($aFields) - 1
    Switch $aFields[$iFields]
    Case "AccountType"
    $aReturn[$iCount][$iFields] = .AccountType
    Case "Caption"
    $aReturn[$iCount][$iFields] = .Caption
    Case "Description"
    $aReturn[$iCount][$iFields] = .Description
    Case "Disabled"
    $aReturn[$iCount][$iFields] = .Disabled
    Case "Domain"
    $aReturn[$iCount][$iFields] = .Domain
    Case "FullName"
    $aReturn[$iCount][$iFields] = .FullName
    Case "InstallDate"
    $aReturn[$iCount][$iFields] = .InstallDate
    Case "LocalAccount"
    $aReturn[$iCount][$iFields] = .LocalAccount
    Case "Lockout"
    $aReturn[$iCount][$iFields] = .Lockout
    Case "Name"
    $aReturn[$iCount][$iFields] = .Name
    Case "PasswordChangeable"
    $aReturn[$iCount][$iFields] = .PasswordChangeable
    Case "PasswordExpires"
    $aReturn[$iCount][$iFields] = .PasswordExpires
    Case "PasswordRequired"
    $aReturn[$iCount][$iFields] = .PasswordRequired
    Case "SID"
    $aReturn[$iCount][$iFields] = .SID
    Case "SIDType"
    $aReturn[$iCount][$iFields] = .SIDType
    Case "Status"
    $aReturn[$iCount][$iFields] = .Status
    EndSwitch
    Next
    EndWith
    $iCount += 1
    Next
    Return $aReturn
    EndFunc ;==>_WinWMI_UserAccount_GetInformation

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_SetName()
    ; Description ......: Renames a User
    ; Syntax ...........: _WinWMI_UserAccount_SetName(Const $sCurrentName ,Const $sNewName , Const[ $sComputer = "127.0.0.1"])
    ; Parameters .......: Const $sCurrentName - Target User
    ; Const $sNewName - New Name
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches or more than one found
    ; |-4 Name is to long
    ; |-5 Renaming failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…2(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/defaul…n32_UserAccount
    ; Au3.api extension.: _WinWMI_UserAccount_SetName( "Current Username" , " New Username" [, "Target Computer"] ) Renames a User ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_SetName(Const $sCurrentName, Const $sNewName, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sCurrentName & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    If $oList.Count <> 1 Then Return SetError(-3, @error, 0)
    For $oItem In $oList
    If StringLen($sNewName) > 15 Then Return SetError(-4, @error, 0)
    $errorlevel = $oItem.rename($sNewName)
    If $errorlevel <> 0 Then Return SetError(-5, @extended, $errorlevel)
    Next
    Return 1
    EndFunc ;==>_WinWMI_UserAccount_SetName

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_SetDisabled()
    ; Description ......: Disables/enables an Useraccount
    ; Syntax ...........: _WinWMI_UserAccount_SetDisabled(Const $sUsername [, Const $bDisable = True, Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sUsername - Target User
    ; Const $bDisable - [optional] Enable = False, Disable = True (default:True)
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches or more than one found
    ; |-4 Enabling/disabling failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_SetDisabled( "Username" [, "True/False" [, "Target Computer"]] ) Enables/disables an Useraccount ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_SetDisabled(Const $sUsername, Const $bDisable = True, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sUsername & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    If $oList.Count <> 1 Then Return SetError(-3, @error, 0)
    For $oItem In $oList
    $oItem.Disabled = $bDisable
    $oItem.Put_
    If $oItem.Disabled <> $bDisable Then Return SetError(-4, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_UserAccount_SetDisabled

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_SetFullname()
    ; Description ......: Changes the full name of an User
    ; Syntax ...........: _WinWMI_UserAccount_SetFullname(Const $sUsername , Const[ $sFullname = "", Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sUsername - Target User
    ; Const $sFullname - The New full name
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches or more than one found
    ; |-4 Changing full name failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_SetFullname( "Username" , "New Fullname" [, "Target Computer"] ) Changes the full name of an Useraccount ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_SetFullname(Const $sUsername, Const $sFullname, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sUsername & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    If $oList.Count <> 1 Then Return SetError(-3, @error, 0)
    For $oItem In $oList
    $oItem.Fullname = $sFullname
    $oItem.Put_
    If $oItem.Fullname <> $sFullname Then Return SetError(-4, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_UserAccount_SetFullname

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_SetLockout()
    ; Description ......: If True, the user account is locked out of the Windows operating system.
    ; Syntax ...........: _WinWMI_UserAccount_SetLockout(Const $sUsername , Const[ $bLockout = True, Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sUsername - Target User
    ; Const $bLockout - [optional] True = Lock out, False = Unlock (default:True)
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches or more than one found
    ; |-4 Changing lockout failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_SetLockout( "Username" [, "True/False" [, "Target Computer"]] ) Locks/unlocks an User ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_SetLockout(Const $sUsername, Const $bLockout = True, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sUsername & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    If $oList.Count <> 1 Then Return SetError(-3, @error, 0)
    For $oItem In $oList
    $oItem.Lockout = $bLockout
    $oItem.Put_
    If $oItem.Lockout <> $bLockout Then Return SetError(-4, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_UserAccount_SetLockout

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_SetPasswordChangeable()
    ; Description ......: If True, the password on this user account can be changed.
    ; Syntax ...........: _WinWMI_UserAccount_SetPasswordChangeable(Const $sUsername , Const[ $bChangeable = True, Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sUsername - Target User
    ; Const $bLockout - [optional] True = Changeable, False = Not Changeable (default:True)
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches or more than one found
    ; |-4 Changing PasswordChangeable failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_SetPasswordChangeable( "Username" [, "True/False" [, "Target Computer"]] ) Sets the password of an User changeable/not changeable( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_SetPasswordChangeable(Const $sUsername, Const $bChangeable = True, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sUsername & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    If $oList.Count <> 1 Then Return SetError(-3, @error, 0)
    For $oItem In $oList
    $oItem.PasswordChangeable = $bChangeable
    $oItem.Put_
    If $oItem.PasswordChangeable <> $bChangeable Then Return SetError(-4, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_UserAccount_SetPasswordChangeable

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_SetPasswordExpires()
    ; Description ......: If True, the password on this user account expires.
    ; Syntax ...........: _WinWMI_UserAccount_SetPasswordExpires(Const[ $sUsername , Const[ $bExpires = True, Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sUsername - Target User
    ; Const $bLockout - [optional] True = Password will expire, False = Password won't expire (default:True)
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches or more than one found
    ; |-4 Changing PasswordChangeable failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_SetPasswordExpires( "Username" [, "True/False" [, "Target Computer"]] ) If True, the password on this user account expires ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_SetPasswordExpires(Const $sUsername, Const $bExpires = True, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT PasswordExpires,Name FROM Win32_UserAccount WHERE Name = '" & $sUsername & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    If $oList.Count <> 1 Then Return SetError(-3, @error, 0)
    For $oItem In $oList
    $oItem.PasswordExpires = $bExpires
    $oItem.Put_
    If $oItem.PasswordExpires <> $bExpires Then Return SetError(-4, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_UserAccount_SetPasswordExpires

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_SetPasswordRequired()
    ; Description ......: If True, a password is required on a Windows user account. If False, this account does not require a password.
    ; Syntax ...........: _WinWMI_UserAccount_SetPasswordRequired(Const $sUsername, Const[ $bRequired = True, Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sUsername - Target User
    ; Const $bLockout - [optional] True = Password is required, False = Password is not required (default:True)
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches or more than one found
    ; |-4 Changing PasswordChangeable failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_SetPasswordRequired( "Username" [, "True/False" [, "Target Computer"]] ) If True, a password is required on a Windows user account. ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_SetPasswordRequired(Const $sUsername, Const $bRequired = True, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_UserAccount WHERE Name = '" & $sUsername & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    If $oList.Count <> 1 Then Return SetError(-3, @error, 0)
    For $oItem In $oList
    $oItem.PasswordRequired = $bRequired
    $oItem.Put_
    If $oItem.PasswordRequired <> $bRequired Then Return SetError(-4, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_UserAccount_SetPasswordRequired

    [/autoit]
  • Passwordsaver: Daten speichern

    • Mahagon
    • 22. Oktober 2010 um 21:42

    entweder machste das in einer ini

    [Passwort]
    1=kjabnsd
    2=asdad

    oder besser noch in einer DB wo die ID der Primary Key ist.

    Natürlich solltest du die Passwörter verschlüsseln ;)

  • nerviges UAC wegbekommen

    • Mahagon
    • 17. Oktober 2010 um 10:36

    Du könntest es höchstens als anmeldescript o.ä. ausführen.
    Wenn man die UAC umgehen könnte, hätte sie ihren Sinn verloren ;)

  • Ist Programm 'X' installiert ?

    • Mahagon
    • 14. Oktober 2010 um 22:37
    Zitat von Kleiner

    Hi!


    Einfach in beiden Uninstall zweige schauen!
    Hir ist der für x64 = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall ;)


    Lg Kleienr

    Du musst bedenken das bei x64 OS, x86 Programme unter "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
    und x64 Programme unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" geschrieben werden ;)

  • Ist Programm 'X' installiert ?

    • Mahagon
    • 14. Oktober 2010 um 19:14

    Ich würde es über die WMI machen, denn bei der Registry gibt es einen Nachteil (außer jemand weiß wie ich im x86 mode x64 Schlüssel auslese)

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    Local Const $sPathini = @ScriptDir & '\' & @ComputerName & '3.ini'
    _Programsread("x86")
    If @OSArch = "x64" Then _Programsread("x64")

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

    Func _Programsread($sOsArch)
    If $sOsArch = "x86" Then $sRegkey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
    If $sOsArch = "x64" Then $sRegkey = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
    $i = 0
    While 1
    $i +=1
    $sReturnkeyname = RegEnumKey($sRegkey, $i)
    If @error Then ExitLoop
    $sReturnDisplayVersion = RegRead($sRegkey & $sReturnkeyname, "DisplayVersion")
    $sReturnDisplayName = RegRead($sRegkey & $sReturnkeyname, "DisplayName")
    If Not StringInStr($sReturnDisplayName,'(KB') <> 0 Then
    IniWrite($sPathini,'Version',$sReturnDisplayName,$sReturnDisplayVersion)
    EndIf
    WEnd
    EndFunc

    [/autoit]

    Im x64 Mode bekommst du nicht alle Programme. Führst du das Programm im x64 Mode aus klappt es nicht mehr unter x86 ^^
    Du könntest es höchstens 2 mal compilieren (einmal x86 einmal x64) und dann ein 3. Script je nach OS Architektur das jeweilige Script ausführen lassen ;)

  • globaler E-Mail-Verteiler einrichten (auf Exchange 2003?!)

    • Mahagon
    • 13. Oktober 2010 um 21:44

    Bekomme zwar kaum englische Windows Betriebssysteme zu Gesicht, aber ich vermute damit ist die Verwaltung gemeint, die auf einem Windows 2003/2008 Server standardmäßig dabei ist ;)

    Du kannst die AD Verwaltung auch mit "dsa.msc" öffnen.
    Vorausgesetzt du hast diese installiert

  • Autoit System

    • Mahagon
    • 12. Oktober 2010 um 21:42

    Mal ne Frage, soll das denn später ähnlich wie BartPE unter Windows PE 3.0 o.ä laufen?.
    oder soll es einfach nur eine Programmverwaltung unter Windows darstellen? ^^
    Denke mit Windows PE hättest du auf jedenfall eine geeignete Plattform, auch wenn diese etwas eingeschränkt ist (WMI fehlt ... ).

    Ansonsten ist es sicher nen interessantes Projekt

  • [Doch nicht Erledigt]Nach Spiel hängt der PC - Ich kann keine Musik mehr hören (Nur noch Rauschen)

    • Mahagon
    • 12. Oktober 2010 um 18:01

    Schon den aktuellen Treiber versucht bzw DirectX mal auf aktuellen Stand gebracht? http://www.microsoft.com/downloads/en/d…6a-9b6652cd92a3

  • Hilfe bei script mit login über mysql

    • Mahagon
    • 3. Oktober 2010 um 14:07

    Funktioniert es denn wenn du es ausführst wenn es noch nicht kompiliert ist ?


    Kann es schlecht testen, habe keine MySQL auf nem Webspace ;)


    Habe grade festgestellt das du deine Daten noch drin hast :D

    Lösung für dein Problem:

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit]
  • Hilfe bei script mit login über mysql

    • Mahagon
    • 3. Oktober 2010 um 14:00

    Naja, die "Fehlermeldung" hilft wohl kaum.
    Was bringt Scite denn für eine Meldung ?

  • SSH Verbindung über AutoIt

    • Mahagon
    • 29. September 2010 um 23:02

    Hier ein kleines Beispiel dazu :)

    Spoiler anzeigen
    [autoit]

    GUICreate("", 140, 105, 192, 124)
    $Button1 = GUICtrlCreateButton("Test", 16, 56, 75, 25)
    GUISetState(@SW_SHOW)
    ShellExecute("notepad.exe")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    If ProcessExists("notepad.exe") Then ProcessClose("notepad.exe")
    Exit
    Case $Button1
    If BitAND(WinGetState("[CLASS:Notepad]"), 2) Then
    WinSetState("[CLASS:Notepad]", "", @SW_HIDE) ;versteckt das Fenster
    Else
    WinSetState("[CLASS:Notepad]", "", @SW_SHOW) ; Zeigt es wieder an
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • SSH Verbindung über AutoIt

    • Mahagon
    • 29. September 2010 um 21:55

    plink muss laufen um die Verbgindung offen zu halten.
    Du könntest es aber mit @SW_HIDE ausblenden.
    So kannst du auch mit @SW_SHOW dann debuggen ;)

  • SSH Verbindung über AutoIt

    • Mahagon
    • 29. September 2010 um 21:43

    Zu Plink siehe: https://autoit.de/index.php?page…link#post181252

    bzgl Checkboxen: schau dir mal die Rückgabewerte und Switch an :)

    Hier ein Beispiel bzgl Checkboxen
    [autoit]


    #include <GUIConstantsEx.au3>
    GUICreate("Form1", 140, 105, 192, 124)
    Local $Checkbox[2]
    $Checkbox[0] = GUICtrlCreateCheckbox("Checkbox1", 16, 8, 97, 17)
    $Checkbox[1] = GUICtrlCreateCheckbox("Checkbox2", 16, 32, 97, 17)
    $Button1 = GUICtrlCreateButton("Test", 16, 56, 75, 25)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($Checkbox) -1 ;so wird jedew Checkbox geprüft
    If GUICtrlRead($Checkbox[$i]) = $gui_checked Then MsgBox(0,"","Checkbox" & $i +1 & " ist angehakt")
    Next
    EndSwitch
    WEnd

    [/autoit]
  • Netzwerkverbindungen auslesen und einzelne ändern

    • Mahagon
    • 27. September 2010 um 20:02

    Da würde ich gleich bei der WMI bleiben
    Siehe: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    auch Interessant:
    http://msdn.microsoft.com/en-us/library/…6(v=VS.85).aspx
    Hier ein Beispiel ;)

    Adapter deaktivieren
    [autoit]

    Local Const $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20

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

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_NetworkAdapter_SetState()
    ; Description ......: Enables/Disables an Networkadapter
    ; Syntax ...........: _WinWMI_NetworkAdapter_SetState($sAdapterName, $sSetState, $sComputer)
    ; Parameters .......: Const $sAdapterName - Adaptername
    ; Const $sSetState - Status
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 Enable/Disable failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…6(v=VS.85).aspx
    ; =================================================================================================

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

    Func _WinWMI_NetworkAdapter_SetState(Const $sAdapterName, Const $sSetState, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID = '" & $sAdapterName & "'", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($oList) = 0 Or Not IsAdmin() Then Return SetError(-2, @error, 0)
    For $oItem In $oList
    Local $errorlevel = 1
    If $sSetState = "Disable" Then $errorlevel = $oItem.Disable()
    If $sSetState = "Enable" Then $errorlevel = $oItem.Enable()
    If $errorlevel <> 0 Then Return SetError(-3, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_NetworkAdapter_SetState

    [/autoit]
    Hier noch Allgemeines zum Auslesen von Informationen ;)
    [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_UserAccount_GetInformation()
    ; Description ......: Returns requested Userinformation in a 2D Array
    ; Syntax ...........: _WinWMI_UserAccount_GetInformation(Const[ $sFields = "Name",Const[ $sUser = "%",Const[ $sComputer = "127.0.0.1"]]])
    ; Parameters .......: Const $sFields - [optional] Userinformation seperated by comma (default:"Name")
    ; $sUser - [optional] Users seperated by comma (default:"%")
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - requested Userinformation in a 2D Array
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 No matches found
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…7(v=VS.85).aspx
    ; Link (German).....: http://www.scriptinternals.de/new/ger/suppor…UserAccount.htm
    ; Au3.api extension.: _WinWMI_UserAccount_GetInformation( [ "Fieldnames" [, "Username" [, "Target Computer"]]] ) Returns requested Userinformation in a 2D Array ( Requires: #include <WinWMI_UserAccount.au3> )
    ; =================================================================================================

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

    Func _WinWMI_UserAccount_GetInformation(Const $sFields = "Name", $sUser = "%", Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $sUser = StringReplace($sUser, ",", "' Or Name LIKE '")
    $oList = $oWMI.ExecQuery("SELECT " & $sFields & " FROM Win32_UserAccount WHERE Name LIKE '" & $sUser & "'", "WQL")
    If IsObj($oList) = 0 Then Return SetError(-2, @error, 0)
    $aFields = StringSplit($sFields, ",", 2)
    If $oList.Count = 0 Then Return SetError(-3, @error, 0)
    Local $aReturn[$oList.Count][UBound($aFields)]
    $iCount = 0
    For $oItem In $oList
    With $oItem
    For $iFields = 0 To UBound($aFields) - 1
    Switch $aFields[$iFields]
    Case "AccountType"
    $aReturn[$iCount][$iFields] = .AccountType
    Case "Caption"
    $aReturn[$iCount][$iFields] = .Caption
    Case "Description"
    $aReturn[$iCount][$iFields] = .Description
    Case "Disabled"
    $aReturn[$iCount][$iFields] = .Disabled
    Case "Domain"
    $aReturn[$iCount][$iFields] = .Domain
    Case "FullName"
    $aReturn[$iCount][$iFields] = .FullName
    Case "InstallDate"
    $aReturn[$iCount][$iFields] = .InstallDate
    Case "LocalAccount"
    $aReturn[$iCount][$iFields] = .LocalAccount
    Case "Lockout"
    $aReturn[$iCount][$iFields] = .Lockout
    Case "Name"
    $aReturn[$iCount][$iFields] = .Name
    Case "PasswordChangeable"
    $aReturn[$iCount][$iFields] = .PasswordChangeable
    Case "PasswordExpires"
    $aReturn[$iCount][$iFields] = .PasswordExpires
    Case "PasswordRequired"
    $aReturn[$iCount][$iFields] = .PasswordRequired
    Case "SID"
    $aReturn[$iCount][$iFields] = .SID
    Case "SIDType"
    $aReturn[$iCount][$iFields] = .SIDType
    Case "Status"
    $aReturn[$iCount][$iFields] = .Status
    EndSwitch
    Next
    EndWith
    $iCount += 1
    Next
    Return $aReturn
    EndFunc ;==>_WinWMI_UserAccount_GetInformation

    [/autoit]
  • Punkt 15 Uhr - Drucken nicht mehr möglich [GELÖST]

    • Mahagon
    • 22. September 2010 um 18:53

    Hmm unter den Druckereigenschaften -> Erweitert hast du aber schon immer Verfügbar angehakt und nicht verfügbar von 00:00 bis 15:00 oder sowas ? :D

  • Punkt 15 Uhr - Drucken nicht mehr möglich [GELÖST]

    • Mahagon
    • 22. September 2010 um 18:37

    Hm läuft denn irgendein Dienst oder ist etwas im Taskmanager, was nicht dorthin gehört?
    Ansonsten würde ich mal Druckereinstellungen so wie Treiber überprüfen.
    Vielleicht auch mal versuchen mit einem PDF Drucker zu drucken, um festzustellen, ob es mit allen Druckern auftritt.

    Aber bzgl. des Neustarts:

    net stop Spooler
    %WINDIR%\System32\spool\PRINTERS leeren
    net start Spooler

    tuts auch :)

  • Netzwerkadapter deaktivieren

    • Mahagon
    • 19. September 2010 um 15:06

    Oder du machst es über die WMI

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ======================================================================================
    ; Name .............: _WinWMI_NetworkAdapter_SetState()
    ; Description ......: Enables/Disables and Networkadapter
    ; Syntax ...........: _WinWMI_NetworkAdapter_SetState($sAdapterName, $sSetState, $sComputer)
    ; Parameters .......: Const $sAdapterName - Adaptername
    ; Const $sSetState - Status
    ; Const $sComputer - [optional] Target Computer (default:"127.0.0.1")
    ; Return values ....: Success - 1
    ; Failure - 0 Sets @error to:
    ; |-1 Connection failed
    ; |-2 WMI Class not found/no access
    ; |-3 Enable/Disable failed
    ; Author ...........: Mahagon
    ; Link .............: http://msdn.microsoft.com/en-us/library/…6(v=VS.85).aspx
    ; =================================================================================================

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

    Local Const $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20

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

    _WinWMI_NetworkAdapter_SetState("LAN-Verbindung 2", "Disable")

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

    Func _WinWMI_NetworkAdapter_SetState(Const $sAdapterName, Const $sSetState, Const $sComputer = "127.0.0.1")
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\CIMV2")
    If IsObj($oWMI) = 0 Then Return SetError(-1, @error, 0)
    $oList = $oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID = '" & $sAdapterName & "'", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($oList) = 0 Or Not IsAdmin() Then Return SetError(-2, @error, 0)
    For $oItem In $oList
    Local $errorlevel = 1
    If $sSetState = "Disable" Then $errorlevel = $oItem.Disable()
    If $sSetState = "Enable" Then $errorlevel = $oItem.Enable()
    If $errorlevel <> 0 Then Return SetError(-3, @error, 0)
    Next
    Return 1
    EndFunc ;==>_WinWMI_NetworkAdapter_SetState

    [/autoit]
  • Grafikkarte per AutoIt tweaken?

    • Mahagon
    • 17. September 2010 um 21:54

    Naja das geht höchstens mit dlls von Ati/Nvidia würde ich vermuten ;)
    Aber ob man damit Rumspielen sollte.. ich weiß ja nicht.
    Die user32.dll kannst du aber wahrscheinlich vergessen.

    Es gibt ja schon diverse Tools für Grafikkarten, vielleicht findest du ja heraus wie diese das machen.


    Edit: jop meinte die user32 war nen Zahlendreher ;)

  • Schleifenproblem: For ... To ... Next

    • Mahagon
    • 17. September 2010 um 21:18

    $zahl ist sozusagen eine Variable der Funktion

    mit Box(1) gibst du $zahl den Wert 1

  • Schleifenproblem: For ... To ... Next

    • Mahagon
    • 17. September 2010 um 21:13

    @ Sen das wär ne Endlosschleife ;)

    [autoit]

    For $i=3 To 9
    If $i <> 9 Then
    $ausgabe = $i
    Else
    $ausgabe = 1
    EndIf
    Msgbox(0,"Test",$ausgabe)
    Next

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™