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. Surfy

Beiträge von Surfy

  • Dos Abfrage nslookup %computername% auswerten

    • Surfy
    • 14. Oktober 2010 um 17:27

    Hallo zusammen

    Ich muss mit Autoit die Abfrage von einem DOS Kommando abfragen

    Das Ergebniss der Abfrage sieht dann so aus:


    Code
    C:\>nslookup %computername% 
    Server: dnssrv.MyDomain.com 
    Address: 192.88.67.30 
    Name: myServer.MyDomain.lab 
    Address: 192.88.213.161 
    
    
    C:\>

    Der Sinn der Abfrage ist, herauszufinden in welcher Domain oder Subdomain ich stecke...

    Hier im Forum habe ich etwas dazu gefunden:

    [autoit]

    Func _getDOSOutput($command)
    Local $text = '', $Pid = Run('"' & @ComSpec & '" /c ' & $command, '', @SW_HIDE, 2 + 4)
    While 1
    $text &= StdoutRead($Pid, False, False) & @CR
    If @error Then ExitLoop
    Sleep(10)
    WEnd
    Return StringStripWS($text, 3)
    EndFunc ;==>_getDOSOutput
    $nslookupcontent=(_getDOSOutput('nslookup %Computername%') & @CRLF)
    MsgBox(4096, "Test", $nslookupcontent, 10)

    [/autoit]

    Nur jetzt, wie weiterverarbeiten, und auch nur die Zeile Nr.4 zu verwerten, dass wird schwieriger.

    Denn If StringInStr( $nslookupcontent, "mydomain.com") kommt ja zb auch immer in Zeile1 vor..

    Ich hoffe ihr wisst rat?! Leider darf ich nur nslookup verwenden, und keine Registry. X(

    Surfy

  • Auto-It: Administration von COM+ Komponenten

    • Surfy
    • 23. September 2010 um 11:12

    Hallo zusammen

    Mein Skill reicht nicht aus, um das ganze in Auto-It umzuschreiben, aber vielleicht hilft folgender VB Script ja mal jemandem weiter:

    Der Aufruf erfolgt so:

    cscript.exe vbsname.vbs APPID

    Der User muss natürlich im Ad existieren, und das Kennwort muss stimmen

    Beispiel bei mir: csript.exe c:\setidentity.vbs {4ECA9F7C-5886-4C64-AA33-7032CC6598C7}

    Und dann geht alles :rock: Danke an Bugfix für die Hilfestellungen ;)

    Code
    if WScript.Arguments.Count <> 1 Then
    WScript.Echo "usage: COMAdmin <appid>"
    WScript.End
    end if
    Dim appID
    appID = WScript.Arguments(0)
    Dim oCatalog 'As COMAdminCatalog
    Dim oApplications 'As COMAdminCatalogCollection
    Dim oApp 'As COMAdminCatalogObject
    Set oCatalog = CreateObject("ComAdmin.COMAdminCatalog")
    Set oApplications = oCatalog.GetCollection("Applications")
    oApplications.PopulateByKey Array(appID)
    Set oApp = oApplications.Item(0)
    
    
    oApp.Value("Identity") = "MyDomain\user1"
    oApp.Value("Password") = "test"
    oApplications.SaveChanges()
    ' Iterate Components of the application if you need to.
    Dim oComponents
    Dim oComp
    Set oComponents = oApplications.GetCollection("Components", oApp.Key)
    oComponents.Populate
    For Each oComp In oComponents
    WScript.Echo "Component: " & oComp.Name
    WScript.Echo " " & oComp.Value("CLSID")
    next
    Alles anzeigen
  • Auto-It: Administration von COM+ Komponenten

    • Surfy
    • 22. September 2010 um 10:47
    Zitat von BugFix

    Ich kann da bei mir leider nicht viel testen - habe nur localhost ;).
    Vielleicht stolpert ja einer unserer Netzwerkadmins hier drüber.


    Also die lokale Variante müsste eigentlich auch reichen, das Domaintesting kann ich schon übernehmen

    'oApp.Value("Identity") = "LocalSystem"
    'oApp.Value("Identity") = "Interactive User"

    Mir ist nur unklar, wie ich die Argumente übergeben kann

    Dim $aAppID[1] = ['Identity, Password, ClassID']

    oder doch

    Dim $aAppID[1] = ['Identity=LocalSystem, Password=1234, ClassID={4ECA9F7C-5886-4C64-AA33-7032CC6598C7}']

  • Auto-It: Administration von COM+ Komponenten

    • Surfy
    • 22. September 2010 um 10:28

    Danke Dir Bugfix.

    Aber was Du da machst - puhhh, übersteigt mein noobwissen um welten *staun*

    ;~ $oApp.Value("Identity") = "DOMAIN\newIdentity"
    ;~ $oApp.Value("Password") = "newPassword"

    Ich müsste eigentlich das hier setzten, aber bekomme es auch mit deiner Vorarbeit nicht hin.

    Zitat

    Du mußt die notwendigen Argumente in das Array $aAppID einfügen.


    Ich müsste ja identity und Password übergeben, und irgendwie noch den Namen oder die ClassID angeben?!

    Identity=Domain\MyUser

    Password: MyPassword

    Application: {4ECA9F7C-5886-4C64-AA33-7032CC6598C7} oder den Namen "PerTax"

    Ich hoffe ihr könnt mir auch noch bei der hürde helfen!

    Surfy

  • Auto-It: Administration von COM+ Komponenten

    • Surfy
    • 21. September 2010 um 17:24

    Dieser VBScrip ausgeführt mit cscript soll das ganze richten *kopfkratz*


    Code
    ' VBScript source code
    if WScript.Arguments.Count <> 1 Then
    WScript.Echo "usage: COMAdmin <appid>"
    WScript.End
    end if
    
    
    Dim appID
    appID = WScript.Arguments(0)
    
    
    Dim oCatalog 'As COMAdminCatalog
    Dim oApplications 'As COMAdminCatalogCollection
    Dim oApp 'As COMAdminCatalogObject
    
    
    Set oCatalog = CreateObject("ComAdmin.COMAdminCatalog")
    Set oApplications = oCatalog.GetCollection("Applications")
    
    
    oApplications.PopulateByKey Array(appID)
    Set oApp = oApplications.Item(0)
    
    
    ' Or
    'oApplications.Populate
    'Dim oTempApp
    
    
    'For Each oTempApp In oApplications
    ' If oTempApp.Name = "System Application" Then
    ' Set oApp = oTempApp
    ' Exit For
    ' End If
    'Next
    
    
    'WScript.Echo oApp.Name & ": " & oApp.Value("Identity")
    
    
    'oApp.Value("Identity") = "LocalSystem"
    'oApp.Value("Identity") = "Interactive User"
    
    
    'oApp.Value("Identity") = "DOMAIN\newIdentity"
    'oApp.Value("Password") = "newPassword"
    
    
    'oApplications.SaveChanges()
    
    
    ' Iterate Components of the application if you need to.
    Dim oComponents
    Dim oComp
    Set oComponents = oApplications.GetCollection("Components", oApp.Key)
    oComponents.Populate
    For Each oComp In oComponents
    WScript.Echo "Component: " & oComp.Name
    WScript.Echo " " & oComp.Value("CLSID")
    next
    Alles anzeigen
  • Auto-It: Administration von COM+ Komponenten

    • Surfy
    • 21. September 2010 um 17:08

    Hi Bugfix

    Ich soll eine mir gelieferte Com+ Komponente im Netzwerk automatisiert verteilen können

    Ich habe inzwischen herausgefunden, dass man die fast die komplette Konfiguration an einem PC mit Adminrechten durchführen kann, und dann das ganze COM+ gedöns als MSI exportieren kann, inkl. berechtigten AD Gruppen.

    Die ganze Com+ Komponente kann man als noch unter einer anderen Identität laufen lassen, und da klemmt es noch als letztes...

    Das ganze ist eher ein Scriptingproblem als solches, gewusst wie bekomme ich es wahrscheinlich dann auch einfach in Autoit umgesetzt. Zum durchklicken ginge das ganze so:


    [list=1]
    [*]On the Start menu, point to Settings, click to Control Panel, double-click Administrative Tools, and then double-click Component Services.

    [*]In the console tree, expand Component Services, expand Computers, expand My Computer, and then expand COM+ Applications.

    [*]Click the COM+ application for which you want to change the identity, and on the Action menu, click Properties.

    [*]On the Advanced tab, in the Permission area, verify that the Disablechanges check box is cleared, and then click OK.
    The properties dialog box closes.
    [*]Right-click the COM+ application again, and then click Properties.

    [*]On the Identity tab, in the Account area, click This user.

    [*]Type the information for the account that you want to use.

    [*]Click OK.
    The following message appears: The applications were created by one or more external products. Are you certain the changes you are about to make are supported by these products?
    [*]Click Yes.

  • Auto-It: Administration von COM+ Komponenten

    • Surfy
    • 17. September 2010 um 10:51

    Hallo zusammen.

    Wiedereinmal stehe ich vor einer knacknuss ;(

    Ich soll eine Com+ Komponente starten / beenden können, sowie auf basis einer AD Gruppe berechtigen.

    Administrative Vorlagen - Component Services - hat man ja ein nettes Gui zum Thema :huh:

    Nur: wie kann ich das Scriptgesteuert, bzw mit Auto-It erledigen?

    Bin mich gerade am Einlesen, vielleicht weiss ja auch hier jemand rat: Laut hilfe ist das jedoch auch hier absolutes Neuland...

    http://msdn.microsoft.com/en-us/library/ms688285

    Anscheinend kann man Com+ Komponenten auch in ein MSI Exportieren! Aber bei mir endet das im Error Code 8002801D

    http://www.carlosag.net/Articles/configureComPlus.aspx

    http://en.wikipedia.org/wiki/Component_Object_Model

    Erstellen von Com+ Komponenten: http://www.vbgold.com/asp-printer-in…-services.shtml

    Ich hoffe mal wieder auf euch,

    Surfy

  • Elegantere Lösung als das hier, action je nach IPadresse

    • Surfy
    • 2. August 2010 um 16:20

    Ich danke euch! @ Oscar - das nenne ich elegant. Ich hab zwar ein riesen Fragezeichen im Gesicht - und versuche es zu verstehen...

    Argh - dass gibt heftigst verdrehte Gehirnwindungen bei mir ;( ;)

  • Elegantere Lösung als das hier, action je nach IPadresse

    • Surfy
    • 2. August 2010 um 15:33

    In der For schlaufe wird aber gar nichts verglichen ;)

    Und dann in eine Zeile pro Möglichkeit - dann wäre ja meine Ursprungsvariante mit

    If $LeftPartIP="192.168.100."

    und 15 Zeilen - ja noch "eleganter" ?? 

  • Elegantere Lösung als das hier, action je nach IPadresse

    • Surfy
    • 2. August 2010 um 13:36

    Kann ich denn IP Adressen "unbehandelt" hochzählen? Die Punkte dazwischen verhunzen dass doch bestimmt...

    Gut theoretisch müsste ich nur die dritte Zahlengruppe durchgehen :whistling:

  • Elegantere Lösung als das hier, action je nach IPadresse

    • Surfy
    • 2. August 2010 um 13:22

    Hallo zusammen

    Bis anhin gab es zwei IP Ranges, bei denen ein Variablenwert in der Registry gesetzt wurde.

    [autoit]

    $LeftPartIP=StringLeft(@IPAddress1,12)
    If $LeftPartIP="192.168.100." or $LeftPartIP="192.168.200." Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\samplekey", "Remote", "REG_SZ", "ON")
    Else
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\samplekey", "Remote")
    EndIf

    [/autoit]

    Neu soll es ein ganzer Bereich sein, vonm 172.30.0. bis 172.30.15. Mit meinem Skill würde ich jetzt einen 15zeiler draus machen, und bin gespannt - wie man das eleganter lösen könnte. Schleifen etc habe ich schon gemacht, aber wie ich das hier einsetzen könnte - ;(


    Danke für eure Tips ;)

  • Registry durchsuchen nach einem Schlüssel

    • Surfy
    • 26. Mai 2010 um 14:06

    Hallo zusammen :)

    Genau sowas habe ich gesucht *freu*

    [autoit]

    $sFound = ''
    $sVar = ''
    ToolTip('please wait...', @DesktopWidth / 2, @DesktopHeight / 2, 'Registry-Search', 1, 5)
    $iTimer = TimerInit()
    [autoit]
    _RegSearch($sFound, 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products', '{35C03C09-3F1G-42CA-A589-A7Z7EE691F65}')
    ToolTip('')
    MsgBox(0, 'Gefunden:', Round(TimerDiff($iTimer) / 1000, 3) & ' sek.' & @CRLF & $sFound)
    Func _RegSearch(ByRef $sFound, $sRegPath, $sSearch)
    Local $sKey, $sVal, $sVar, $i = 0, $j = 0
    While True
    $i += 1
    $sKey = RegEnumKey($sRegPath, $i)
    If @error Then ExitLoop
    _RegSearch($sFound, $sRegPath & '\' & $sKey, $sSearch)
    $j = 0
    While True
    $j += 1
    $sVal = RegEnumVal($sRegPath & '\' & $sKey, $j)
    If @error Then ExitLoop
    $sVar = RegRead($sRegPath & '\' & $sKey, $sVal)
    If StringInStr($sVar, $sSearch, 2) Then $sFound &= $sRegPath & '\' & $sKey & '\' & $sVal & @CRLF
    WEnd
    WEnd
    Return
    EndFunc
    if $sFound <> '' Then
    MsgBox(4096, "Test", "Nüx gefunden", 10)
    Else
    MsgBox(4096, "Test", "Was gefunden: " & $sFound & $sVar, 10)
    EndIf

    [/autoit]

    Allerdings übersteigt der script "etwas" meinen Skill. Wieso ist $sFound nicht leer, wenn der Suchbegriff nicht gefunden wurde?

  • Vergleich von Variableninhalten

    • Surfy
    • 18. Mai 2010 um 13:57

    Danke für eure Hilfe ;)

    Sinn ist natürlich nicht eine Msgbox, sondern eine Aktion die passiert, je nach Wert der Umgebungsvariable. Dass es "If Not" nicht gibt, wusste ich nicht *schähm*

    Danke euch!

  • Vergleich von Variableninhalten

    • Surfy
    • 18. Mai 2010 um 13:28

    Hallo zusammen

    Heute sitze ich irgendwie auf dem Schlauch :cursing:

    Das hier geht nicht:

    [autoit]

    $Checkpermission = EnvGet("MyPersonalPathVari")
    if not $Checkpermission = "Wert1" Then
    MsgBox(4096, "Information", "You have Wert1",10)
    EndIf
    MsgBox(4096, "Information", "END of Query",10)

    [/autoit]

    mach ich es so, geht es:

    [autoit]

    $Checkpermission = EnvGet("MyPersonalPathVari")
    if $Checkpermission = "Wert1" Then
    MsgBox(4096, "Information", "You have Wert1",10)
    EndIf
    if $Checkpermission = "Wert2" Then
    MsgBox(4096, "Information", "You have Wert2",10)
    EndIf
    if $Checkpermission = "Wert3" Then
    MsgBox(4096, "Information", "You have Wert3",10)
    EndIf

    [/autoit]

    Sieht jemand mein problem? :rolleyes: :S

  • Textdatei durchsuchen und falls was gefunden wird die ganze Zeile anzeigen

    • Surfy
    • 17. Mai 2010 um 13:33

    Ich würde sagen, dass dies der Koordination der Spieler dient, ausserhalb des Spiels, und keinen Cheat oder Bot sein dürfte. So rein nach Erfahrung dieser Browserspiele.

  • .msi und RunAs

    • Surfy
    • 7. Mai 2010 um 12:57

    Die frage ist, ob Du in einem Unternehmensnetzwerk bist..

    Probiers mal mit $DomainName="localhost" am Anfang...

    [autoit]

    Local $UserName = "Administrator"
    Local $Password = "*****"
    Local $Password2 = "*****"
    Local $ScriptDir = @UserProfileDir & "\Temp\Access_Runtime\"
    Local $Program = $ScriptDir & "\ACCESSRT.msi"
    Local $workingdir = @UserProfileDir & "\Temp\Access_Runtime\"
    DirCreate($ScriptDir)
    MsgBox(0, "Access-2003-Runtime-Installation", "Die Dateien werden nun kopiert und anschließend ausgeführt.")
    FileCopy("\\elkafax\VOL1\01-EDV\01-Standardsoftware\22-Access-Runtime\*.*", $ScriptDir, 9)
    $Fehler=RunAs ( $UserName, $DomainName, $Password, 0, @ComSpec & ' /c msiexec /i ' & $workingdir & $program & ' /qb', ,@SW_HIDE )
    If $Fehler = 0 Then
    RunAs ( $UserName, $DomainName, $Password2, 0, @ComSpec & ' /c msiexec /i ' & $workingdir & $program & /qb', ,@SW_HIDE )
    EndIf
    WinWait("Access 2003 Runtime-Setup","Setup ist zur Installation bereit")
    WinActivate("Access 2003 Runtime-Setup","Setup ist zur Installation bereit")
    ControlClick("Access 2003 Runtime-Setup","Setup ist zur Installation bereit","Button1","left")
    WinWait("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen")
    WinActivate("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen")
    ControlClick("Access 2003 Runtime-Setup","Setup wurde erfolgreich abgeschlossen","Button2","left")
    DirRemove($ScriptDir, 1)

    [/autoit]
  • Exe als Service (Systemrechte), Interaktion mit User möglich?

    • Surfy
    • 7. Mai 2010 um 12:12

    Danke Dir

    An sowas hatte ich auch schon gedacht, aber gehofft dass dies nicht nötig wäre ;( 8|

  • .msi und RunAs

    • Surfy
    • 7. Mai 2010 um 11:40
    [autoit]

    RunAs ( 'UserName', 'DomainName', 'PassWord', 0, @ComSpec & ' /c msiexec /i ' & $workingdir & ' /qb', ,@SW_HIDE )

    [/autoit]

    Denke das wäre mal ein Ansatz ;)

  • Exe als Service (Systemrechte), Interaktion mit User möglich?

    • Surfy
    • 7. Mai 2010 um 10:34

    Hallo zusammen

    Es geht um eine Exe, die auf einen Prozess wartet, und diesen Abschiesst sobald vorhanden.

    Gelöst ist es mit Runas:

    [ gelöst ] Prozessüberwachen und abschiessen wenn vorhanden

    Am liebsten würde ich das ganze aber als Service, oder Scheduled Task laufen lassen, das zu machen ist ja einfach (schtask, sc) :huh:

    Allerdings habe ich dann kein Tray Element mehr wenn ich mich einlogge, und kein Tooltip. Gibt es dafür auch einen Lösungsweg?

    DH kann eine Exe unter Systemrechten laufen, und dann doch mit dem Desktop des Users korrespondieren? Welche Möglichkeiten gibt es dazu?

    Danke für eure Tips!

    /EDIT: Das Exe vor dem Logon zu starten hat den Vorteil, dass der Prozess auch schon gekillt wird, bevor ein User sich einloggt.

  • Prozessüberwachen und abschiessen wenn vorhanden

    • Surfy
    • 6. Mai 2010 um 19:07

    Wow vielen Dank, so läuft das perfekt :)

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™