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

  • Systray Eintrag als Service ausführen lassen, Windows 7

    • Surfy
    • 5. Juni 2012 um 16:07

    Hallo zusammen

    Unter XP habe ich unseren Usern via Tooltip informationen darüber gegeben, was gerade installiert wird, oder ob ein Reboot notwendig ist, manchmal auch verhindert das gewisse Applikationen gestartet werden, während der Installation.

    Da die Installationen unter dem Account "local System" dh unter Systemrechten durchlaufen, habe ich dafür einen Service erstellt, der via "Allow service to interact with Desktop" auch dem User Infromationen liefern konnte.

    Das ganze ist mit srvany.exe umgesetzt - und läuft prinzipiell auch unter Windows 7 (Service-Installation, etc)

    Nur: Unter Windows7 darf ein "Local System" anscheinend nicht mehr mit dem User interagieren, obwohl das häkchen gesetzt ist, und der Service gestartet wird.

    Die Exe wird ausgeführt, nur alles was in Richtung GUI geht, sieht der User "local System" und nicht der eingeloggte User.

    Gemäss Microsoft, muss dies neu via WTSSendMessage umgesetzt werden.

    http://msdn.microsoft.com/en-us/library/…2(v=vs.85).aspx

    Im englischen Forum wird auch schon dazu diskutiert:

    http://www.autoitscript.com/forum/topic/14…t-spawning-gui/

    http://www.autoitscript.com/forum/topic/13…ssage-function/

    Habt ihr euch damit auch schon herumschlagen müssen?

    Was für workarrounds gibt es?

    Surfy

    // Edit: ich weiss das "local User" kein User ist, sondern darin Prozesse mit Systemrechten laufen - ich wollte nur verständlich schreiben ;)

  • Dateiversion eines Verzeichnisses & Unterverzeichnissen auslesen

    • Surfy
    • 8. Februar 2012 um 08:07

    Danke Dir autoBert, das ist perfekt so! ;)

    Nun sind noch mehr Kommandos drin, die ich noch nie gelesen habe 8|

  • Dateiversion eines Verzeichnisses & Unterverzeichnissen auslesen

    • Surfy
    • 7. Februar 2012 um 08:15

    Wow, danke Dir!

    Läuft sowas von sauber :D

    Einziges goodie wäre noch, wenn man mit sortierbare Columnen, nach Datei Versionen sortieren könnte, aber das wäre dann auch wirklich nur noch ein goodie ;) Was aber anscheinend gar nicht so einfach ist? Die Suche war zu "Arraydisplay sortierbar" - nicht gerade hilfreich...

    Nochmals Danke, Surfy

  • Dateiversion eines Verzeichnisses & Unterverzeichnissen auslesen

    • Surfy
    • 6. Februar 2012 um 18:38

    Hallo zusammen

    Ich suche ein Script, kann aber auch Batch, VB. ein Tool etc sein, damit ich nicht von Pfoten 1000 Dateien durchforsten muss.

    Hat das schonmal jemand gemacht?

    *fragendschau*

    Surfy

  • Die Gänsefüsschen - mal wieder

    • Surfy
    • 5. Dezember 2011 um 09:30

    Hi Greenhorn

    Nein, ansonsten würde dann ja wenigstens der Parameteraufruf korrekt ablaufen, und dieser läuft mit:

    [autoit]

    RunWait($Executable & $Parameter)

    [/autoit]

    Dh da ist etwas anderes im argen, was ich gerne verstehen würde ;(

  • Die Gänsefüsschen - mal wieder

    • Surfy
    • 2. Dezember 2011 um 16:18

    Den Ansatz kannte ich noch nicht ;) - Aber leider klappt es mit dem Ergebniss nicht so wie gewünscht!

    In der MessageBox ist noch alles ok - aber dann im Application-Eventlog sieht man - dass das Ergebniss wieder ohne Gänsefüsschen ist:

    [autoit]

    $counter="99"
    $parameter = StringFormat (" ConfigFileLocation=%sc:\install\Simply\APInstall%d.cfg%s /silent ForceDriverTypeChange=TRUE", Chr (34), $counter, Chr (34))
    ;ConsoleWrite (StringFormat ("Parameter: %s\n", $parameter)
    MsgBox(4096, "Test", $Parameter, 10)
    ;$parameter1=
    RUNWAIT (@COMSPEC & ' /c eventcreate /t information /so Myinstaller /id 100 /l application /d "Used Parameter' & $Parameter ,"",@SW_HIDE)

    [/autoit]
  • Die Gänsefüsschen - mal wieder

    • Surfy
    • 2. Dezember 2011 um 08:13

    Hallo zusammen

    Ich habe folgenden Script, indem ich ein configfile mit Gänsefüsschen aufrufen will:


    [autoit]

    $Executable= chr(34) & @ProgramFilesDir & "\Simply\AutoPilot\FC-FCoE\apinstall.exe" & chr(34)
    $Parameter=' ConfigFileLocation=' & chr(34) & 'c:\install\Simply\APInstall' & $counter & '.cfg' & chr(34) & ' /silent ForceDriverTypeChange=TRUE'
    RunWait($Executable & $Parameter)

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

    RUNWAIT (@COMSPEC & ' /c eventcreate /t information /so Myinstaller /id 100 /l application /d "Used Parameter' & $Parameter ,"",@SW_HIDE)

    [/autoit]

    Aber egal was ich mache, der Pfad zum Comfigfile kommt immer ohne Gänsefüsschen...

    Auch der Paranoia-Modus ala:

    [autoit]

    $Parameter=" ConfigFileLocation=" & chr(34) & chr(34) & "c:\install\simply\APInstall" & $counter & ".cfg" & chr(34)& chr(34) & " /silent ForceDriverTypeChange=TRUE"

    [/autoit][autoit]

    $Parameter=" ConfigFileLocation=" & chr(34) & "c:\install\simply\APInstall" & $counter & ".cfg" & chr(34) & " /silent ForceDriverTypeChange=TRUE"

    [/autoit]

    funktionierte nicht. Ich habe dann auch noch versucht, das ganze ohne dynamischen Inhalt zu machen:

    [autoit]

    $Parameter=' ConfigFileLocation="c:\install\Simply\APInstall8.cfg" /silent ForceDriverTypeChange=TRUE'

    [/autoit]

    aber immer: im Eventlog erscheint der Parameter ohne Gänsefüsschen.. Ich bin jetzt auf Batchfiles umgestiegen, aber mich interessiert jetzt schon noch - wo es da geklemmt hat ;(

    Danke für eure Hilfe!

    Surfy

  • Error-Code abfangen

    • Surfy
    • 17. November 2011 um 11:30

    Sowas:

    $code = RunWait("C:\temp\MyExe.exe")
    MsgBox(1, "Der Error-Code", $code)

    habs, gefunden :thumbup:

  • Error-Code abfangen

    • Surfy
    • 17. November 2011 um 10:40

    Hallo zusammen

    Mein Script soll einen Exitcode ausgeben, welches ja zb mit Exit(10) möglich ist.

    Wie kann ich den Exitcode meiner Exe auslesen, für einen Test?

    Danke euch, Surfy

  • @errorprobleme in Skript

    • Surfy
    • 14. Oktober 2011 um 15:22

    Und wie kommt er nun an den Wert vom psexec? *tomatenaufdenaugenhab*

  • Registry bearbeiten, alle Hives eines Subfolders löschen, die auf ein bestimmtes File verweisen

    • Surfy
    • 13. Oktober 2011 um 14:07

    Dass war jetzt mal nur theoretisch angesprochen.

    Ich habe hier PCs an dem abwechselnd mehrere User arbeiten, mit unterschiedlichen User-Profilen.

    Unter der Annahme das alle Adminuser sind, wäre es nun natürlich interessant, wenn ich einen "Clean-Up" falscher Registry Keys - gleich für alle User durchführen könnte, die ein lokales Profil haben.

    DH: wenn ich deinen Script nun mit

    [autoit]

    $sRegPath = 'HKEY_CURRENT_USER\SOFTWARE\Test\'

    [/autoit]

    verwende, dann löscht er die falschen Beiträge in meinem Profil. Aber nicht in anderen Profilen auf meinem PC.

    Gib mal in einem Command Fenster ein: REG QUERY HKU

    Du siehst dann mindestens so etwas, je nach anzahl lokaler User - einige mehr:

    Zitat


    C:\>REG QUERY HKU

    ! REG.EXE VERSION 3.0

    HKEY_USERS

    HKEY_USERS\.DEFAULT

    HKEY_USERS\S-1-5-19

    HKEY_USERS\S-1-5-19_Classes

    HKEY_USERS\S-1-5-20

    HKEY_USERS\S-1-5-20_Classes

    HKEY_USERS\S-1-5-21-2092224188-xxxxxxxx-xxxxx-xxxxx

    Alles anzeigen

    Dann siehst Du die SID`s aller lokalen Userprofile. Diese Profile findest Du in Regedit auch wieder - abgebildet unter HKey_USERS.

    Mein Anliegen wäre nun, anstelle von

    [autoit]

    $sRegPath = 'HKEY_USERS\SOFTWARE\Test\'

    [/autoit]

    zu verwenden, damit gleich alle Userprofile korrigiert sind.

    Hab dass gerade ausprobiert, klappt leider nicht :huh: Daher ist mir greade auch unklar, wieso Autoit einen Unterschied von

    ("HKU") und ("HKCU"),macht, laut hilfe, wenn man da dann doch nicht rankommt.

    Der Link ins Englische Forum führt zu einem UDF, mit dem es möglich ist, alle lokalen und remote gespeicherten Userprofile zu bearbeiten. Aber halt auch "nur" etwas suchen und löschen, aber nicht etwas übergeordnetes wie Du es hier in deiner Function gemacht hast.

    Surfy

  • Registry bearbeiten, alle Hives eines Subfolders löschen, die auf ein bestimmtes File verweisen

    • Surfy
    • 13. Oktober 2011 um 13:43

    Mhh, wenn ich das richtig sehe, müsste ich mit Verwendung von dem Hive in der Form von

    "HKEY_USERS" ("HKU"),

    und deiner Funktion - auch schon alle Userprofile durchkämmen? *kopfkratz*

    Zitat

    Ein Registry-Schlüssel muss mit "HKEY_LOCAL_MACHINE" ("HKLM"), "HKEY_USERS" ("HKU"), "HKEY_CURRENT_USER" ("HKCU"), "HKEY_CLASSES_ROOT" ("HKCR")oder "HKEY_CURRENT_CONFIG" ("HKCC") beginnen.


    Ansonsten würde die Unterscheidung ja keinen Sinn machen, im Vergleich von HKU zu HKCU. Nur wieso denn das UDF im englischsprachigen Forum?

  • Registry bearbeiten, alle Hives eines Subfolders löschen, die auf ein bestimmtes File verweisen

    • Surfy
    • 13. Oktober 2011 um 13:03

    Herzlichen Dank Marvin, so läufts 1a!

    Spoiler anzeigen

    Ich musste nur noch den $ssearch Value anpassen, die doppel "\\" kommen nur beim Registry Export :)

    [autoit]

    $sRegPath = 'HKEY_LOCAL_MACHINE\SOFTWARE\Test\'
    $sSearch = 'c:\inetdb\ener.dll'
    _RegDelSearch($sRegPath,$sSearch,'filer')

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

    Func _RegDelSearch($sRegPath,$sSearch,$Key)
    Local $i = 0 ,$sKey, $RegRead
    While True
    $i += 1
    $sKey = RegEnumKey($sRegPath, $i)
    If $sKey = '' Then ExitLoop
    $RegRead = RegRead($sRegPath & $sKey, $Key)
    If $RegRead = '' Then ContinueLoop
    If $RegRead = $sSearch Then
    ;MsgBox(4096, "Test", $sSearch, 10)
    RegDelete($sRegPath & $sKey)
    EndIf
    WEnd
    EndFunc

    [/autoit]

    Jetzt probiere ich das noch für die gleichen HKCU Keys aller lokalen Benutzer umzusetzen, hab da was ganz spannendes im englischen Forum entdeckt:

    Das Registry UDF http://www.autoitscript.com/forum/topic/75…fs/page__st__40

    Da kann man sich die SIDs aller lokalen User anzeigen lassen, bearbeiten, und so ev auch deine Function darin verschachteln :)

    HKCU\SOFTWARE\Test filer='c:\\inetdb\\ener.dll' :whistling: 8o

    Surfy

  • Registry bearbeiten, alle Hives eines Subfolders löschen, die auf ein bestimmtes File verweisen

    • Surfy
    • 13. Oktober 2011 um 10:59

    Hi Marvin

    Doch, das Ziel wäre, die ganze Struktur zu löschen, falls darin der "filer"="c:\\inetdb\\ener.dll" enthalten ist.

    Deswegen haben mir die gefundenen Sachen wie "Regsearch" nicht geholfen, weil ich etwas "mehr" löschen würde, als das gesuchte.

    Surfy

  • Registry bearbeiten, alle Hives eines Subfolders löschen, die auf ein bestimmtes File verweisen

    • Surfy
    • 13. Oktober 2011 um 09:17

    Hallo zusammen

    Ich würde gerne einen Registrybereich durchsuchen (HKLM\SOFTWARE\Test\) und jeden Subhive löschen, der auf eine bestimmte DLL verweist

    Sozusagen ein delete von [xxx], falls ener.dll enthalten ist

    HKLM\SOFTWARE\Test\[xxx], "filer"="c:\\inetdb\\ener.dll"

    Code
    REGEDIT4 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Test\Entry1] 
    "Counter"="3" 
    "filer"="c:\\inetdb\\ener.dll" 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Test\Otherone] 
    "Counter"="4" 
    "filer"="c:\\inetdb\\ener2.dll" 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Test\Something] 
    "Counter"="2" 
    "filer"="c:\\inetdb\\ener2.dll"

    Hat jemand eine Idee, wie man das in Autoit umsetzen könnte?

    Surfy

  • ODBC Datasourcen löschen, die einen bestimmten Treiber verwenden.

    • Surfy
    • 12. Oktober 2011 um 10:37

    Wie ich ODBC Datasourcen lösche, die keinen Treiber mehr haben (leichen) - ist mir leider noch immer nicht klar.

    Bei meinen Tests lösche ich dann entweder zuviel, oder gar nichts :(

  • ODBC Datasourcen löschen, die einen bestimmten Treiber verwenden.

    • Surfy
    • 11. Oktober 2011 um 09:50

    Das ist super nett, danke Dir :)

    War bei mir auch in einer VM - ohne wäre ich nur allzuoft am neu installieren.

  • ODBC Datasourcen löschen, die einen bestimmten Treiber verwenden.

    • Surfy
    • 11. Oktober 2011 um 09:32

    Das war noch nicht ganz richtig, der ganze Hive HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI ist so weg :wacko:

  • ODBC Datasourcen löschen, die einen bestimmten Treiber verwenden.

    • Surfy
    • 11. Oktober 2011 um 09:02

    Der Treiber selber ist in dem Fall schon weg (nicht mehr unter Drivers ersichtlich), aber der Reghive steht noch:


    Zitat


    REGEDIT4

    [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\PIDMS2]
    "Driver"="C:\\WINDOWS\\system32\\MyDriver.dll"
    "Server"="MyServer"
    "EnableEnsure"="0"
    "Dictionary"=""
    "CacheSQLTables"="0"
    "AccountPrompt"="0"
    "CommitBehavior"="1"
    "TxnIsolation"="2"
    "FetchRows"="100"
    "ReadOnly"="1"
    "AccessibleTables"="1"

    Alles anzeigen


    Ohne treiber macht das Script aber nichts mehr..

  • ODBC Datasourcen löschen, die einen bestimmten Treiber verwenden.

    • Surfy
    • 11. Oktober 2011 um 08:13

    Herzlichen Dank, so gesäubert kann ich auch etwas damit anfangen ! :)

    Das einzige was nicht geht, ist, dass wenn der ODBC Treiber schon weg ist, die Datasourcen nicht mehr gelöscht werden.

    Kommt zwar nicht so oft vor, aber dass würde ich auch gerne abdecken ;(

    Was ich da drehen müsste, ist mir allerdings schleierhaft 8|

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™