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

Beiträge von Moombas

  • Bildschirmschoner verhindern

    • Moombas
    • 7. April 2020 um 13:38

    GerhardSchr: Nochmal zu deiner vorigen Frage:

    Remarks

    The _WinAPI_SetThreadExecutionState() function cannot be used to prevent the user from putting the computer to

    sleep. Applications should respect that the user expects a certain behavior when they close the lid on their

    laptop or press the power button.

    This function does not stop the screen saver from executing.


    Das erste in Fett sollte deine Frage beantworten, letzteres widerspricht irgendwie das dies funktioniert (Bildschirmschoner verhindern), müsste hier das Remark bei der Funktionsbeschreibung geändert werden?

  • Bildschirmschoner verhindern

    • Moombas
    • 7. April 2020 um 11:39

    Das sollte in jedem Fall möglich sein.

  • Bildschirmschoner verhindern

    • Moombas
    • 7. April 2020 um 09:52

    Da ich selber es bisher nicht benötige, nein. War auch nur eine Idee die mir kam, falls jemand mal mit den anderen Lösungen Probleme haben sollte.

  • Bildschirmschoner verhindern

    • Moombas
    • 7. April 2020 um 09:26

    Wir hatten das Thema ja bereits ein paar mal.

    Hat jemand mal getestet ob folgendes auch funktionieren würde:

    Am Skript start als erstes Registryeintrag "Screensaveactive" auf "0" setzen

    Skript läuft

    Am Skript Ende als letztes Registryeintrag "Screensaveactive" auf "1" setzen.

    Ist zwar nicht die schönste aber wohl fast sicherste Methode.

    Das Einzige was mich persönlich dabei stört, es gibt in autoit (meines Wissens) kein "OnDestroy" Event, wie ich es aus Freepascal kenne, so das der Registryeintrag auf jeden Fall (auch bei Absturz etc,) wieder gesetzt wird.

    Wäre dann nur mit Sub-Programm möglich:

    - subprogramm wird gestartet

    - subprogramm liest den Wert des registryeintrags (s.o.) aus -> variable

    - Subprogramm ändert registryeintrag

    - startet das eigentliche skript und wartet auf dessen beendigung (runwait)

    - Subprogramm macht die registryeinstellung rückgängig.

  • Daten "sicher durch kompilieren"?

    • Moombas
    • 3. April 2020 um 09:52

    Es gibt keinen Schlüssel zur Entschlüsselung ganz einfach

    Beispiel (wie ich es in Delphi mal gemacht habe):

    Code
    //übergebene Parameter prüfen
    if fileexists('\\Server\key.txt') then //Hier liegt der Key (das Verschlüsselte Passwort als SHA256-Key) auf einem Server, kann aber auch hard eincodiert werden
    begin
      assignfile(pwtf, '\\Server\key.txt'); //SHA256 Vergleichsstring laden
      reset(pwtf);
      readln(pwtf, pwd);
      closefile(pwtf);
      for i := 1 to ParamCount do
      begin
        Parameter := Parameter + ' ' + ParamStr(i);
        if (ParamStr(i)[1] = '/') then
        begin
          if ((ParamStr(i)[2] = 'p') or
             (ParamStr(i)[2] = 'P')) and
             (ThashSHA2.GetHMAC(Paramstr(i + 1), ThashSHA2.GetHashString(Paramstr(i + 1)), SHA256) = pwd) then //Hier wird das per Parameter übergebene Passwort in SHA256 umgewandelt und mit dem Vergleichsstring abgeglichen
          begin
            Do Actions
          end;
        end;
      end;
    end;
    //---------------Beispiel um das Passwort in den SHA-String zu wandeln---------------
    //Passwort generieren
    newPW := 'ABCDEFG';
    Clipboard.AsText := ThashSHA2.GetHMAC(newPW, ThashSHA2.GetHashString(newPW), SHA256);
    Alles anzeigen
  • Daten "sicher durch kompilieren"?

    • Moombas
    • 3. April 2020 um 09:07

    Ich hoffe ich lehne mich nicht zu weit aus dem Fenster, da dies nicht mein Gebiet ist aber ich meine mich erinnern zu können:

    - Hart einkodierte PAsswörter könnten ausgelesen werden (Datamining)

    - Passwörter verschlüsselt speichern und auf den Schlüssel prüfen (eingegebenes Passwort nach Eingabe in z.B. SHA256 verschlüsseln und mit dem SHA256 Schlüssel des PAssworts vergleichen)

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 2. April 2020 um 15:06

    Nun kennt CMD zumindest schonmal auch wieder wbadmin etc.

    Jetzt sagt er mir jedoch das die Syntax nicht stimmen würde -.-

    Kopiere ich sie 1:1 aus dem Programm in die geöffnete cmd funktioniert es jedoch. Was will Windoof nun schon wieder?

    Edit:

    Ich glaube mein Schwein pfeifft... Hab den Befehl im Program 1:1 nochmal abgetippt anstatt ihn zu kopieren - läuft! No Comment!

    Danke an alle.

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 2. April 2020 um 08:17

    Generell läuft der Recoverypart nun:

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    
    #Include <File.au3>
    #Include <Array.au3>
    
    Global $Folder, $File, $Mount, $Unmount, $Number, $Result
    
    $Folder =_FileListToArray('D:\WindowsImageBackup\' & @ComputerName, 'Backup*', 2, True)
    $File   =_FileListToArray($Folder[1], '*.vhdx', 1, True)[1]
    
    FileDelete(@ScriptDir & "\mount.txt")
    $Mount  = FileOpen(@ScriptDir & "\mount.txt", 1)
    FileWriteLine($Mount, 'sel vdisk file="' & $File & '"')
    FileWriteLine($Mount, "attach vdisk")
    ;~ FileWriteLine($Mount, "attributes disk set readonly") ;Optional
    $Number = 3 ;Ist bei uns immer das 3. Volume, muss sonst ausgelesen werden!
    FileWriteLine($Mount, "select volume " & $Number)
    FileWriteLine($Mount, "assign Letter=X")
    FileClose($Mount)
    $Result = ShellExecuteWait("diskpart.exe", "/s " & @ScriptDir & "\mount.txt")
    FileDelete(@ScriptDir & "\mount.txt")
    
    ;Hier die Kopieroperationen einfügen
    
    FileDelete(@ScriptDir & "\unmount.txt")
    $Unmount = FileOpen(@ScriptDir & "\unmount.txt", 1)
    FileWriteLine($Unmount, "select volume " & $Number)
    FileWriteLine($Unmount, "remove letter=X")
    FileWriteLine($Unmount, 'sel vdisk file="' & $File & '"')
    ;~ FileWriteLine($Mount, "attributes disk clear readonly") ;Optional
    FileWriteLine($Unmount, "detach vdisk")
    FileClose($Unmount)
    ShellExecuteWait("diskpart.exe", "/s " & @ScriptDir & "\unmount.txt")
    FileDelete(@ScriptDir & "\unmount.txt")
    Alles anzeigen

    Dennoch würde mich interessieren warum der Backup Part über autoit nicht funktioniert bzw. ob es ggf. noch einen anderen Aufruf für cmd gibt, der das richtig umsetzt.

    KAnn es hierbei Probleme geben, weil das autoit programm in 32Bit kompiliert wurde und Das Win 10 Pro 64Bit ist?

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 1. April 2020 um 12:52

    Na so oft brauchen wir es nicht.

    Das Backup funktioniert ja, wenn ich es über die Lazarus Anwendung laufen lasse.

    Mich wundert das nur bei der CMD aus Autoit das Problem auftritt "wbadmin konnte nicht gefunden werden".

    Ich würde das gerne in Autoit umsetzen, um in einer einheitlichen Entwicklungsumgebung zu bleiben.

    Und der Lazarus Code sieht nun nicht so sehr anders aus:

    Code
    program Backup;
    {$mode Delphi}{$H+}
    uses
      ShellAPI;
    
    {$R *.res}
    
    begin
      ShellExecute(0, nil, PChar('cmd'), PChar('/c wbadmin.exe start backup -quiet -vssCopy -backupTarget:D: -include:C:'), nil, 1);
    end.                

    Und damit brauchen wir keine Tasks etc. und wird wie gewohnt ausgeführt, nur halt die ganze Festplatte anstatt nur einzelne Ordner. Das stört aber nicht.

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 31. März 2020 um 15:32

    Professor Bernd :

    Windows 10 Pro 64Bit

    Es wird die aktuellste vscsc.exe verwendet, es gibt leider keine für Win10.

    Siehe meine "neuen" Ansätze einen Beitrag über deinem.

    Problem scheint zu sein, das die cmd, wenn ich sie über autoit starte, irgendwie anders ist.

    Erläuterung:

    CMD über Startmenü kennt wbadmin (hier nur mal einen kurzen Testaufruf):

    pasted-from-clipboard.png

    CMD über autoit kennt wbadmin (auch mit absolutem Pfad) gar nicht:

    pasted-from-clipboard.png

    Kennt einer den Unterschied?

    Ich habe auch schon probiert den Link aus dem Startmenü per shellexecute auszuführen, leider der Gleiche Effekt.

    Über Lazarus (FreePascal) funktionierts.

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 31. März 2020 um 14:33

    Die Zugriffe können wir selber nicht steuern, das kommt vom Hersteller einer unserer verwendeten Software.

    Die Arbeitszeiten sind sehr Unterschiedlich.

    Edit: Ich habe nun folgendes (manuell) hin bekommen:

    In 2 Use-Cases aufgeteilt:

    • Backup erstellen
      1. Backup von C: erstellen (wbadmin start backup -quiet -vssCopy –backupTarget:D: -include:C:)
      2. Das Älteste Backup löschen, wenn mind. 3 *.vhdx Dateien vorhanden sind (wbadmin delete backup -deleteoldest -quiet)
    • Backup einspielen
      1. Backup-Datei ausführen (D:\WindowsImageBackup\PCNAME\Backup 2020-03-31 124454\xyz.vhdx) -> Fehlermeldung ist normal, kann ignoriert werden
      2. im diskmgmt.msc taucht das Backup als "zweites Laufwerk C:" nur ohne Laufwerksbuchstaben auf (Virtuell)
      3. Diesem weist man nun einen Laufwerksbuchstaben zu (z.B.: X:)
      4. Von nun an könnte man Dateien/Ordner kopieren
      5. In diskmgmt.msc das Virtuelle Laufwerk wieder löschen (Es muss erst der Laufwerksbuchstabe wieder entfernt werden und dann "virtuelle Festplatte trennen", sonst ist es ein Einwegbackup XD)
      6. Danach ist diese Backupdatei auf diesem Wege scheinbar nicht mehr zugänglich - Teste ich noch

    Bleibt das Problem der Umsetzung in Autoit.

  • Warum schreibt AutoIT mein RAM voll ?

    • Moombas
    • 31. März 2020 um 13:58

    Hmm, selbst ohne viel pber die Hintergründe etc. zu Wissen:

    Wieso nutzt du nicht eine Datenbank?

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 31. März 2020 um 12:50
    Zitat von alpines

    Schau mal nach ob du das nicht in Windows-Features irgendwo aktiviert bekommst. Vielleicht ist es ja nur standardmäßig deaktiviert?

    Leider nein. Ich denke das dies entweder wirklich über die Windowsversion zur Verfügung gestellt wird oder innerhalb der wbadmin.exe

    Edit: Zitat was ich gefuden habe: "Der Restore Befehl funktioniert nur in der Server Version und nicht unter Windows 10"

    @Prof. Bernd:

    Es wird jeden Tag eine Datensicherung gemacht nach ein paar definierten Abläufen. Am Ende wird dann ein Programm von uns gestartet, welches unter anderem ein Backup anlegt.

    Einige Dienste laufen aber weiter und greifen auf Datenbanken und andere Dateien zu, so das man diese nicht einfach kopieren kann.

    Bisher wurde dazu halt eine VSS () gemacht und der aktuelle Stand gesichert.

    AutoIt
    ...

    CMD:

    Code
    C:\path\vscsc.exe -exec=C:\path\backup.exe C: > C:\path\log\vscs_start.txt

    Als Fehler erhalten wir bei der Ausführung:

    Spoiler anzeigen

    VSCSC.EXE 3.0 - Volume Shadow Copy Simple Client for Windows 7

    This is a modified version of the original Volume Shadow Copy Client

    by Microsoft (VSHADOW.EXE), originally bundled with the Microsoft SDK 7

    for Windows Vista and Windows 7.


    (Option: Enable tracing)

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: '-exec=C:\custom\backup\backup.exe' with 'wx'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 482]] exec 5

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: '-exec=C:\custom\backup\backup.exe' with 'wi'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 482]] exec 5

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: '-exec=C:\custom\backup\backup.exe' with 'wait'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: '-exec=C:\custom\backup\backup.exe' with 'exec'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 482]] exec 5

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 491]] - Additional Param: [C:\custom\backup\backup.exe]

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 502]] Return true; (additional param = C:\custom\backup\backup.exe)

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    (Option: Execute binary/script after shadow creation 'C:\custom\backup\backup.exe')

    [[ CommandLineParser::MainRoutine @ shadow.cpp: 85]] OUTPUT: (Option: Execute binary/script after shadow creation 'C:\custom\backup\backup.exe')

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: 'C:' with 'wx'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: 'C:' with 'wi'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'wait'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: 'C:' with 'exec'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'tracing'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with '?'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'q'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: 'C:' with 'qx'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: 'C:' with 's'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'da'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: 'C:' with 'dx'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 470]] Matching Arg: 'C:' with 'ds'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 468]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'wm'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'wm2'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'wm3'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] ENTER CommandLineParser::MatchArgument

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 453]] Matching Arg: 'C:' with 'ws'

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 457]] Return: FALSE

    [[ CommandLineParser::MatchArgument @ shadow.cpp: 451]] EXIT CommandLineParser::MatchArgument

    [[ IsVolume @ util.h: 244]] ENTER IsVolume

    [[ IsVolume @ util.h: 247]] Checking if C: is a real volume path...

    [[ IsVolume @ util.h: 271]] IsVolume returns TRUE

    [[ IsVolume @ util.h: 244]] EXIT IsVolume

    (Option: Create shadow copy set)

    [[ CommandLineParser::MainRoutine @ shadow.cpp: 85]] OUTPUT: (Option: Create shadow copy set)

    [[ CommandLineParser::MainRoutine @ shadow.cpp: 363]]

    Attempting to create a shadow copy set... (volume C: was added as parameter)

    [[ GetUniqueVolumeNameForPath @ util.h: 309]] ENTER GetUniqueVolumeNameForPath

    [[ GetUniqueVolumeNameForPath @ util.h: 316]] - Get volume path name for C: ...

    [[ GetUniqueVolumeNameForPath @ util.h: 343]] - Path name: C:\ ...

    [[ GetUniqueVolumeNameForPath @ util.h: 347]] - Unique volume name: \\?\Volume{de429c83-0000-0000-0000-100000000000}\ ...

    [[ GetUniqueVolumeNameForPath @ util.h: 309]] EXIT GetUniqueVolumeNameForPath

    [[ VssClient::Initialize @ vssclient.cpp: 45]] ENTER VssClient::Initialize

    [[ VssClient::Initialize @ vssclient.cpp: 48]] Executing COM call '"CoInitialize(NULL)"'

    [[ VssClient::Initialize @ vssclient.cpp: 63]] Executing COM call '"CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT_PRIVACY, RPC_C_IMP_LEVEL_IDENTIFY, NULL, EOAC_NONE, NULL )"'

    [[ VssClient::Initialize @ vssclient.cpp: 66]] Executing COM call '"CreateVssBackupComponents(&m_pVssObject)"'

    [[ VssClient::Initialize @ vssclient.cpp: 80]] Executing COM call '"m_pVssObject->InitializeForBackup()"'

    ERROR: COM call "m_pVssObject->InitializeForBackup()" failed.

    [[ VssClient::Initialize @ vssclient.cpp: 45]] OUTPUT:

    ERROR: COM call "m_pVssObject->InitializeForBackup()" failed.

    - Returned HRESULT = 0x80042302

    [[ VssClient::Initialize @ vssclient.cpp: 45]] OUTPUT: - Returned HRESULT = 0x80042302

    - Error text: VSS_E_UNEXPECTED

    [[ VssClient::Initialize @ vssclient.cpp: 45]] OUTPUT: - Error text: VSS_E_UNEXPECTED

    - Please re-run VSHADOW.EXE with the /tracing option to get more details

    [[ VssClient::Initialize @ vssclient.cpp: 45]] OUTPUT: - Please re-run VSHADOW.EXE with the /tracing option to get more details

    [[ VssClient::Initialize @ vssclient.cpp: 45]] EXIT VssClient::Initialize

    [[ CommandLineParser::MainRoutine @ shadow.cpp: 85]] EXIT CommandLineParser::MainRoutine

    [[ wmain @ shadow.cpp: 67]] HRESULT Error caught: 0x80042302

    [[ CommandLineParser::~CommandLineParser @ shadow.cpp: 579]] ENTER CommandLineParser::~CommandLineParser

    [[ CommandLineParser::~CommandLineParser @ shadow.cpp: 579]] EXIT CommandLineParser::~CommandLineParser

    [[ wmain @ shadow.cpp: 31]] EXIT wmain


  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 31. März 2020 um 11:58

    Sagen wir es so: Generell wäre es schöner es selbst zu schreiben (ging ja bis Win7 mit den Win Tools für die VSS), da wir dies in ein Programm einbetten was immer (nach bestimmten Bedingungen) ausgeführt wird.

    Das Problem ist, das dabei Dateien mit gesichert werden müssen, die einen Zugriffsschutz haben (werden von Diensten etc. verwendet, Datenbanken etc.). Das ging halt bisher mit der VSS gut.

    Bekloppter weise ging ja die reine Sicherung (wenn ich die Befehle direkt in die CMD manuell eingegeben habe oder die cmd-Datei über die cmd ausgeführt habe), nur der Zugriff auf diese nicht.

    Das Recovery ist (warum auch immer), nicht in der "Windowsversion enthalten" (evtl. nur bei Serverversionen?).

    Wichtig dabei ist halt gewisse Ordner zu sichern, da diese bei einem Festplattenausfall zurückgespielt werden müssen. Dies muss im Einklang mit dem oben beschriebenen Vorgang passieren und wir sichern in 2 Orte.

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 30. März 2020 um 14:11

    Also gelernt habe ich schon mal (durch Fehlermeldungen direkt in der CMD):

    - Ordner zu sichern ist in ?unserer? Windows 10 Version nicht enthalten, nur das ganze Laufwek ist möglich

    --> Runwait('C:\Windows\System32\wbadmin.exe start backup -quiet -vssCopy –backupTarget:D: -include:C:')

    - wbadmin recovery ist in ?unserer? Windows 10 Version nicht enthalten

    --> In den Dropdowns sind die "Backups" enthalten

    Nun habe ich 2 Probleme:

    - Ich muss auf einzelne Ordner des Backups zugreifen können.

    --> Weiß jemand ob man irgendwie auf diese "Backups" zugreifen kann?

    - Diese Kommandozeile lässt sich nur als gesonderte cmd in der cmd erfolgreich ausführen, ansonsten passiert nix

    --> Mache ich da irgendwas falsch?

  • Volumenschattenkopie (VSS) unter Win10

    • Moombas
    • 30. März 2020 um 08:23

    Moin zusammen,

    hat obiges (VSS unter Win10) schon mal jemand gemacht/hin bekommen?

    Also über AutoIt eine VSS erstellen und dann darauf zugreifen und ggf. danach wieder frei zu geben?

    Oder hat jemand eine alternative Lösung dafür (ohne irgendein kostenpflichtiges zusätzliches Programm)?

    Wir haben dies bisher unter XP und Win 7 genutzt um Dateien die im Zugriff sind etc. zu kopieren zu können für Backups.

    Leider funktioniert das unter Win10 nicht mehr.

    Die Person, die dies bisher gemacht hat ist nur noch minimal bei uns im Einsatz.

    Realisiert wurde dies über die vscsc.exe, die über eine batch ausgeführt wurde, die über ein autoit-Programm aufgerufen wird.

    Ich habe zwar das gefunden um eins zu erstellen:

    Code
    wmic shadowcopy call create Volume=c:\

    Habs aber bisher nicht getestet, da ich keinen Weg gefuden habe wie ich dann darauf zugriefen kann. Bisher war dies immer bei uns das Laufwerk "X:".

    Bzw. weiß jemand wie man so etwas über WBADMIN realisieren kann (mit Statusabfrage)?

    Meine Entwürfe sehen aktuell (im groben) so aus:

    AutoIt
    #RequireAdmin
    
    $Ordner = 'C:\Ordner,C:\NocheinOrdner'
    logging('Erstelle Backup', 2)
    $VSS = ShellExecuteWait('C:\Windows\System32\wbadmin', 'start backup -quiet -vssCopy –backupTarget:D: -include:' & $Ordner, @ScriptDir, '', @SW_HIDE)
    if $VSS = 0 Then
        logging(' - Erfolg', 3)
    Else
        logging(' - Error: ' & $VSS, 3)
    EndIf
    
    ----------------------------------------------------------------
    
    #RequireAdmin
    #include<Date.au3>
    
    $Ordner = 'C:\Ordner,C:\NocheinOrdner'
    ;~ $time = @MDAY-1 & '/' & @MON & '/' & @YEAR & '-' & @HOUR & ':' @MIN
    $time = _DateAdd('D', -1, _Now()) & '-' & _NowTime(4)
    logging('Restore Backup', 2) ;Eigene Logging Funktion
    $VSS = ShellExecuteWait('C:\Windows\System32\wbadmin', 'start recovery -version:' & $time & ' -itemType:File -recursive -items:' & $Ordner, @ScriptDir, '', @SW_HIDE)
    if $VSS = 0 Then
        logging(' - Erfolg', 3)
    Else
        logging(' - Error: ' & $VSS, 3)
    EndIf
    Alles anzeigen
  • Zeilen aus Textdatei löschen

    • Moombas
    • 25. März 2020 um 15:46

    Wenn ich mich nicht irre: Garnicht.

    Das wäre dann:

    AutoIt
    $g_aFileArr[0] = UBound($g_aFileArr) - 1

    Wenn du darauf also Wert legst, müsstest du das in Zeile 28 einfügen.

  • Pixelsumme ändert sich ständig

    • Moombas
    • 11. März 2020 um 09:09

    Die Software hat eine API. Schau da mal rein ob ggf. da was für dich dabei ist um die Abfrage besser/sicherer hin zu bekommen:

    http://www.dobot.it/wp-content/upl…obot-api-en.pdf

    Noch eine andere Idee:

    Die Software sendet ja auch Informationen an den Roboter, ggf. kannst du prüfen ob noch ein Informationsaustausch statt findet und darauf reagieren.

  • Bestimten Link finden und Öffnen in Webseite

    • Moombas
    • 24. Februar 2020 um 12:06

    Zu 2.: Müsstest du das nicht mit _IENavigate oder _IELinkClickByText machen um das gleiche Fenster/Tab zu nutzen?

  • Syntax RUN befehl

    • Moombas
    • 14. Januar 2020 um 10:41

    Dann versuch es mal mit Shellexecute:

    AutoIt
    ;ShellExecute ( "filename" [, "parameters" [, "workingdir" [, "verb" [, showflag]]]] )
    ShellExecute ("C:\Users\knebelmario\Documents\2020.xlsx", "", "C:\Users\knebelmario\Documents\", "", @SW_SHOWMAXIMIZED)

    bzw. folgendes müsste auch gehen:

    AutoIt
    ShellExecute ("C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE", "C:\Users\knebelmario\Documents\2020.xlsx", "C:\Users\knebelmario\Documents\", "", @SW_SHOWMAXIMIZED)

    Ich war eigentlich der Meinung das das mit Run() auch geht aber vllt. bin ich da gerade falsch.


    Nachtrag:

    Laut Internet müsste folgendes eigentlich auch gehen:

    AutoIt
    Run('"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" "C:\Users\knebelmario\Documents\2020.xlsx"')

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™