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

Beiträge von veronesi

  • Batch Datei als anderer Benutzer ausführen

    • veronesi
    • 28. Dezember 2011 um 14:48

    Kuck doch mal in die Hilfe bei RunAs

    Dort hast Du irgendwo einen Übergabeparameter $Program (oder ähnlich).
    Das ist das Programm, welches unter dem anderen Benutzernamen läuft!!
    Alle weiteren Programmzeilen laufen wieder unter dem "originalen" Benutzernamen!

    Gruß Veronesi

  • Batch Datei als anderer Benutzer ausführen

    • veronesi
    • 28. Dezember 2011 um 14:13

    Überdenke nochmals folgende Zeile:
    If Not IsAdmin() = 0 Then

    Besser: If Not IsAdmin() Then
    Oder: If IsAdmin() = 0 Then

    Gruß Veronesi
    Edit:
    Und bei RunAs solltest Du gleich das zu startende Programm angeben.
    Denn in der nächsten Zeile mit RunWait wird das wieder als "normaler" Benutzer ausgeführt!

  • AutoIt 3.3.8.0 ist freigegeben!

    • veronesi
    • 24. Dezember 2011 um 12:32

    Hi
    Mal eine Frage:
    Das #include <SQLite.dll.au3> scheint nun "leer" zu sein.
    Was muss ich tun, damit ich die SQLite Funktionen in der neuen 3.3.8.0 wieder zum laufen bringe?

    Ich scheine keine DLL mehr zu haben.
    Danke für Eure Rückmeldungen!

    Edit: Ok man muss die DLL selbst herunterladen und z.B. per FileInstall hinzufügen!

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 10:04

    Hei, vielen Dank, allen, die geholfen haben.
    Besonders für den letzten Link von Microsoft.
    Nun konnte ich es mit den $WINHTTP_OPTION_USERNAME und _PASSWORD lösen!

    Für die "Nachwelt" hier noch die (bei mir funktionierende) Funktion!

    Spoiler anzeigen
    [autoit]

    Func _ConnectToUpdateServer($sFileToDownload, $sLocalFilePath)
    Local Const $sUserAgent = "Name"
    Local Const $sFullServerName = "https://www.firma.com"
    Local Const $sServerName = "www.firma.com"
    Local Const $sUsername = "username"
    Local Const $sPassword = "password"
    Local Const $sFolder = "/verzeichnis/"
    Local $sData, $Ret

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

    $UpdateServer_hSession = _WinHttpOpen($sUserAgent, $WINHTTP_ACCESS_TYPE_DEFAULT_PROXY)
    If @error Then Return SetError(1, 0, 0)
    $UpdateServer_hConnect = _WinHttpConnect($UpdateServer_hSession, $sServerName, $INTERNET_DEFAULT_HTTPS_PORT)
    If @error Then
    _CloseOpenHandles()
    Return SetError(2, 0, 0)
    EndIf
    $UpdateServer_hRequest = _WinHttpOpenRequest($UpdateServer_hConnect, "GET", $sFolder & $sFileToDownload, Default, $sFullServerName, "*/*", $WINHTTP_FLAG_SECURE)
    If @error Then
    _CloseOpenHandles()
    Return SetError(3, 0, 0)
    EndIf
    _WinHttpSetOption($UpdateServer_hRequest, $WINHTTP_OPTION_SECURITY_FLAGS, BitOr($SECURITY_FLAG_IGNORE_CERT_CN_INVALID, $SECURITY_FLAG_IGNORE_CERT_DATE_INVALID, $SECURITY_FLAG_IGNORE_UNKNOWN_CA))
    If @error Then
    _CloseOpenHandles()
    Return SetError(4, 0, 0)
    EndIf
    _WinHttpSetOption($UpdateServer_hRequest, $WINHTTP_OPTION_USERNAME, $sUsername)
    If @error Then
    _CloseOpenHandles()
    Return SetError(5, 0, 0)
    EndIf
    _WinHttpSetOption($UpdateServer_hRequest, $WINHTTP_OPTION_PASSWORD, $sPassword)
    If @error Then
    _CloseOpenHandles()
    Return SetError(6, 0, 0)
    EndIf
    _WinHttpSendRequest($UpdateServer_hRequest)
    If @error Then
    _CloseOpenHandles()
    Return SetError(7, 0, 0)
    EndIf
    _WinHttpReceiveResponse($UpdateServer_hRequest)
    If @error Then
    _CloseOpenHandles()
    Return SetError(8, 0, 0)
    EndIf
    $sData = _WinHttpSimpleReadData($UpdateServer_hRequest, 2)
    If @error Then
    _CloseOpenHandles()
    Return SetError(8, 0, 0)
    EndIf
    $Ret = FileWrite($sLocalFilePath, BinaryToString($sData))
    _CloseOpenHandles()
    Return 1
    EndFunc ;==>_ConnectToUpdateServer

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

    Func _CloseOpenHandles()
    _WinHttpCloseHandle($UpdateServer_hRequest)
    _WinHttpCloseHandle($UpdateServer_hConnect)
    _WinHttpCloseHandle($UpdateServer_hSession)
    Return 1
    EndFunc ;==>_CloseOpenHandles

    [/autoit]

    Herzlichen Dank und schöne Feiertage!
    Gruss, Veronesi

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 09:04

    Sch*****
    Vielen Dank für die Information!

    Aber der Firefox kann das ja auch.
    Kann ich nicht irgendwie per AutoIt (ohne ändern der Registry) einen entsprechenden Request absetzen?

    Ich meine, nur weil der IE das nicht mehr anbietet, heisst das noch lange nicht, dass er es nicht KÖNNTE, wenn es aktiviert wäre.

    Die entsprechenden notwendigen Funktionen dafür sollten doch mit AutoIt irgendwie zusammen - würfelbar sein :)

    Danke schon mal!
    Gruss Veronesi

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 09:00

    Nein, das funktioniert eben (in IE) nicht!
    Es kommt immer die Meldung
    Die Datei "https://benutzer:passwort@https://autoit.de/www.firma.com/verzeichnis/dateiname.ext" wurde nicht gefunden. Überprüfen Sie die Schreibweise und wiederholen Sie den Vorgang.

    Im Firefox geht es!
    Aber das nützt mir wenig. Es soll (automatisiert per AutoIt) auf "allen" PCs laufen. (Sagen wir mal ab WinXP, notfalls erst ab Vista)

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 08:55

    Es ist ein httaccess Login.
    Das weiss ich, weil es unser Administrator gestern eingerichtet hat und ich ihm zuschauen konnte.
    Ist das nun ein Problem??

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 08:49

    Hallo Marvin

    Die Lösung bei Edit baut mir bloss eine URL zusammen.
    Genau diese URL habe ich auch schon probiert.
    In Firefox funktioniert sie, aber im IE nicht!!!

    Im IE habe ich keine URL gefunden, welche funktioniert!
    Ich kann bloss die "Originale" URL eingeben und dann kommt das PopUp mit den Logindaten.
    Aber das kann ich nicht bei den Benutzern machen!!!

    Edit: Es muss doch möglich sein, mitzuschneiden, was genau gesendet wird!

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 08:34

    Hallo Marvin
    Ja, ich verwende den LiveHttpHeader.

    Ich starte ihn bestimmt viel zu früh! Aber egal wann ich ihn starte. Ich bekomme (auf meiner https Webseite) NIE ein Post!

    Ich bekomme etwa so etwas zurück:
    https://www.firma.com/verzeichnis/

    GET /verzeichnis/ HTTP/1.1
    Host: https://autoit.de/www.firma.com
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Connection: keep-alive
    Cache-Control: max-age=0, max-age=0
    Authorization: Basic xxxxxxxxxxxxxxxxxxx

    HTTP/1.1 200 OK
    Connection: close
    Transfer-Encoding: chunked
    Date: Thu, 22 Dec 2011 07:32:36 GMT
    Content-Type: text/html;charset=UTF-8
    Content-Encoding: gzip
    Server: Apache/2.2.11 (Win32) PHP/5.2.8
    X-UA-Compatible: IE=EmulateIE7
    Vary: Accept-Encoding
    ----------------------------------------------------------

    Und das scheint zu funktioniert!
    Ich sehe dann das ganze Verzeichnis.
    Aber ich habe nirgends ein POST????

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 08:20

    Hallo Marvin
    Dein Code funktioniert soweit.
    Aber wenn ich anstelle von https://autoit.de/www.google.de http://http://www.google.de eingebe, funktioniert es nicht mehr!

    Da ich ein https Protokoll habe, dachte ich, dass ich das brauche.
    Nun gut. Ich habe einfach bei mir mal das Https:// weggelassen und nun bekomme ich keinen Fehler mehr!!

    Nun muss ich aber irgendwie den _WinHttpOpenRequest mit Post zusammenstricken. Da blicke ich momentan nicht durch!
    Ich habe aber inzwischen das Firefox Plugin zum laufen gebracht. Ich kann nun aufzeichnen, was gesendet wird gemäss Tutorial.

    Mein Problem ist: Dort steht, es muss ein POST kommen. Ich bekomme aber nur immer ein GET!!!
    Danke für Eure Antworten!

  • Download aus geschütztem Bereich

    • veronesi
    • 22. Dezember 2011 um 07:30

    Vielen Dank für Eure Antworten.
    Das mit dem Firefox und dem Tutorial habe ich versucht. Doch das Plugin scheint nicht mit dem neuesten Firefox kompatibel zu sein. Ich konnte nichts aufzeichnen!

    @progandy
    Ich habe Deine Idee mal aufgegriffen und versucht eine Funktion zu machen. Leider ohne Erfolg

    [autoit]

    #include "WinHttp.au3"
    Global $UpdateServer_hSession, $UpdateServer_hConnect

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

    $Ret = _ConnectToUpdateServer()
    MsgBox(64, "Ergebnis", $Ret & " / @error: " & @error)
    Exit

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

    Func _ConnectToUpdateServer()
    Local Const $sUserAgent = "Name"
    Local Const $sServerName = "https://www.firma.com/verzeichnis"

    $UpdateServer_hSession = _WinHttpOpen($sUserAgent, $WINHTTP_ACCESS_TYPE_DEFAULT_PROXY)
    If @error Then Return SetError(1, 0, 0)
    $UpdateServer_hConnect = _WinHttpConnect($UpdateServer_hSession, $sServerName, $INTERNET_DEFAULT_HTTPS_PORT)
    If @error Then
    _CloseOpenHandles()
    Return SetError(2, 0, 0)
    EndIf

    _CloseOpenHandles()
    EndFunc ;==>_ConnectToUpdateServer

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

    Func _CloseOpenHandles()
    _WinHttpCloseHandle($UpdateServer_hConnect)
    _WinHttpCloseHandle($UpdateServer_hSession)
    Return 1
    EndFunc ;==>_CloseOpenHandles

    [/autoit]

    Hier bekomme ich immer den @error 2.
    Deshalb komme ich vorläufig auch nicht weiter.
    Und dann bei _WinHttpOpenRequest weiss ich nicht, was ich bei $sTarget einfüllen sollte!

    Mein Problem ist, dass im Firefox mit dem Befehl https://benutzer:passwort@https://autoit.de/www.firma.com/verzeichnis alles funktioniert (ausser dem Zertifikat).
    Im IE aber nicht.

    Ich wäre sehr froh, wenn jemand mir helfen könnte, diese Funktion fertig zu machen!
    Danke!

  • Download aus geschütztem Bereich

    • veronesi
    • 21. Dezember 2011 um 20:10

    Danke für die Informationen.
    Leider verstehe ich so gut wie nichts übers Http Protokoll.
    Ich weiß nicht, wie ich den Benutzenamen, Passwort per POST übertragen kann/soll.

    Und wie fordere ich dann die entsprechende Datei an?
    Wir haben mehrere FTP Server. Aber aus Sicherheitsgründen ist es uns nicht erlaubt, die Dateien auf den FTP Server zu laden :(
    Das wäre einfacher!

    Vielleicht kann mir ja jemand mit WinHttp eine UDF machen (helfen)?

  • Download aus geschütztem Bereich

    • veronesi
    • 21. Dezember 2011 um 15:23

    Hallo zusammen!
    Ich habe mal wieder ein Problem :)

    Wir haben einen geschützten Downloadbereich. Geschützt mit Benutzername und Passwort.

    https://www.firma.com/verzeichnis
    In diesem Verzeichnis liegen diverse Dateien, welche ich mit meinem Programm herunterladen möchte.
    Benutzername und Passwort sind bekannt.

    Gebe ich IE manuell diese Adresse ein, kommt zuerst die Meldung, dass das Zertifikat ungültig ist. (Ist momentan noch leider so)
    Klicke ich dann auf "Trotzdem laden", werde ich per Popup nach einem Benutzernamen und Passwort gefragt.

    Gebe ich das korrekt ein, lande ich auf der Seite und kann die Dateien manuell herunterladen.

    Wie kann ich dies jedoch alles automatisch machen?
    Also ohne das gültige Zertifikat und dass ich die Dateien (Dateinamen sind bekannt) herunterladen kann.
    Eine Verbindung über https://benutzer:passwort@firma.com/verzeichnis funktioniert leider nicht (bzw. nicht auf allen PCs).
    Auch möchte ich vermeiden, dass einfach das Popup ferngesteuert wird. Der Benutzer soll nichts davon sehen.

    Ich wäre sehr froh, wenn mir hier jemand Tatkräftig unter die Arme greifen könnte, da ich keinen Schimmer habe, wie ich da weiterkommen soll!

    Vielen Dank!
    Veronesi

  • Netzwerkänderung per WM_Command

    • veronesi
    • 17. Dezember 2011 um 16:05

    Hallo i2c

    Vielen Dank für Deine Antwort.
    Leider erschlägt mich die ungeheure Flut der Informationen bezüglich SENS auf den MSDN Seiten fast. :rofl:
    Ich habe es noch nicht einmal geschaft, ein (funktionierendes) Codebeispiel zur Verwendung zu finden.

    Natürlich müsste ich es dann mit meinen spärlichen Kenntnissen auch noch in AutoIt übersetzen....

    Nun wäre ich also um Umsetzungsvorschläge / Beispiele / Ratschläge froh!
    Danke schon mal!
    Gruss Veronesi

  • Netzwerkänderung per WM_Command

    • veronesi
    • 17. Dezember 2011 um 14:18

    Hallo zusammen

    Für ein Projekt muss ich während des ganzen Ablaufes die Netzwerkverbindung überwachen.
    Sobald das Netzwerk unterbrochen wird (Kabel ausgezogen / IP auf eine ungültige IP geändert / Netzwerkadapter deaktiviert / Änderung von LAN auf WLAN / ISP Unterbruch....) muss ich so schnell wie möglich gewisse Dinge ausführen.

    Im Moment triggere ich mit Adlibregister alle 500ms eine Funktion die
    1. Alle @IPAddressX auf eine gültige (Firmeninterne) IP Adresse prüft
    2. Prüft ob ein bestimmter Netzwerkpfad existiert = Verbindung zu unserem Server vorhanden!
    3. Ob im Pfad auch Dateien existieren und ob diese nicht das Attribut "O" (Offline) besitzen.

    Nun frage ich mich, ob das nicht auch einfacher geht.
    Kann ich nicht mit den Windows Messages (WM_XYZ) ein "Event" auf ein Ereignis setzen?
    Sagen wir mal, das Ereignis soll immer beim Ändern der Netzwerkverbindung ausgelöst werden.
    Darin könnte ich dann meine Firmenspezifischen Dinge noch prüfen.

    Das wäre auf jeden Fall viel eleganter, als periodisch das alles zu prüfen!
    Doch wie mache ich das? Welche Windows Message muss ich überwachen?

    Vielen Dank für Eure Inputs!

    Grüße Veronesi

  • Frage zur Funktion UPDATE

    • veronesi
    • 14. Dezember 2011 um 12:36

    Hallo JanausSm

    Das ist schön, wenn das Problem gelöst ist.
    In dem Fall kannst Du den Thread noch auf gelöst setzen.
    (1. Post editieren => auf gelöst setzen => speichern.)

    Gruss Veronesi

  • Frage zur Funktion UPDATE

    • veronesi
    • 14. Dezember 2011 um 11:44

    Hast Du schon mal einen solchen Befehl versucht?
    (Funktioniert natürlich nur, wenn die Backup-Tabelle bereits existiert und gleich aufgebaut ist, wie die Master-Tabelle!)

    SQL
    INSERT OR REPLACE INTO [NewTable] SELECT * FROM [OldTable]

    Gruss Veronesi

    Edit:
    Und falls die neue Tabelle noch nicht exisitiert (evtl. das erste mal) hilft folgende Syntax:

    SQL
    CREATE TABLE [NewTable] AS SELECT * FROM [OldTable]
  • Frage zur Funktion UPDATE

    • veronesi
    • 14. Dezember 2011 um 10:32

    Und vielleicht kannst Du mit dieser Funktion alle Werte zuerst in ein Array einlesen:

    [autoit]

    Func _GetDataFromID($TableName, $ID) ;Get all Data from ID
    _SQLite_Query($hDatabase, "SELECT * FROM " & $TableName & " WHERE ID=" & $ID, $hQuery)
    _SQLite_FetchData($hQuery, $aQueryAnswer)
    _SQLite_QueryFinalize($hQuery)
    Return $aQueryAnswer
    EndFunc ;==>_GetDataFromID

    [/autoit]

    Gruss, Veronesi

  • Frage zur Funktion UPDATE

    • veronesi
    • 14. Dezember 2011 um 10:29

    Vielleicht hilft Dir ja so eine Funktion weiter.
    Wenn Du alle neuen Werte in einem Array hast....

    [autoit]

    Func _ReplaceRecord($TableName, $aValues, $ID) ;Replace Record with ID
    Local $sValues = $ID & ", '" ;Create SQL String for inserting into the table
    For $i = 0 To UBound($aValues) - 1
    $sValues &= $aValues[$i] & "', '"
    Next
    $sValues = StringTrimRight($sValues, 3)

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

    $Ret = _SQLite_Exec($hDatabase, "INSERT OR REPLACE INTO " & $TableName & " VALUES (" & $sValues & ")")
    If $Ret = $SQLITE_OK Then Return 1
    Return $Ret
    EndFunc ;==>_ReplaceRecord

    [/autoit]


    Gruss Veronesi

  • Aufruf eines zweiten Skripts mit Parameterübergabe und -rückgabe

    • veronesi
    • 27. November 2011 um 16:30

    Das ist Richtig.
    Aber in der Regel reicht ja auch ein Integer Wert.
    Z.B. 1 = Erfolgreich / 0 = Fehler / < 0 = Fehlerwert

    Damit kannst Du schon viele Stati übermitteln.
    Ich dachte, dass Du das mit Rückgabewert haben möchtest!

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™