Wie entsperre ich Dateien mit handle.exe und dem Prozessnamen?

8

Ich habe Unlocker 1.9.1 ausprobiert, aber es funktioniert nicht richtig für mich unter Windows 7 (funktionierte einwandfrei unter Windows XP) und ich habe auch LockHunter 2.0.2.103 x64 ausprobiert und einen Fehler gemeldet, aber ... LockHunter entsperrt die Datei tatsächlich von der GUI, aber nicht von der Kommandozeile.

Daher möchte ich handle.exe von SysInternals verwenden , um eine Datei "TestPro.log" freizuschalten. Ich kenne den absoluten Weg, wenn es hilft. Ich kann alle Prozesse auflisten, die die Datei durch Ausführen gesperrt haben

C:\Windows\system32>c:\edutester\progs\handle testpro.log
java.exe           pid: 2120   type: File           338: C:\Users\Public\TestPro
\TestPro Automation Framework\Logs\TestPro.log
java.exe           pid: 1004   type: File           934: C:\Users\Public\TestPro
\TestPro Automation Framework\Logs\TestPro.log

Was ich wissen muss, um die Datei mithilfe der obigen Informationen automatisch über die Befehlszeile zu entsperren . Es ist kein Benutzereingriff möglich.

  • Windows 7 64bit
  • Microsoft Windows [Version 6.1.7601]
Radek
quelle

Antworten:

8

Sie können handle.exedie PIDs und Handles einmal auflisten und dann mehrmals schließen, um sie zu schließen.

Verwenden Sie den for /fBefehl, um das Ergebnis des ersten Befehls zu durchlaufen. Ich habe keinen Windows-Computer zum Testen zur Hand, aber er sollte ungefähr so ​​aussehen:

Aus einer Batch-Datei:

for /F "tokens=3,6 delims=: " %%I IN ('handle.exe -accepteula TestPro.log') DO handle.exe -c %%J -y -p %%I

Über die Befehlszeile:

for /F "tokens=3,6 delims=: " %I IN ('handle.exe -accepteula TestPro.log') DO handle.exe -c %J -y -p %I
Stephen Jennings
quelle
Ich kann es nicht zum Laufen bringen. Ihr Code gibt mir, ('handle.exe was unexpected at this time.ich denke, es fehlt invorher ('handle.exe was unexpected at this time.Aber dann %%J contains : `Also ist es kein gültiges Argument für handle.exe
Radek
Ja, ich erinnere mich, dass ich Probleme hatte, den Befehl genau richtig zu machen, aber ich kann mich nicht erinnern, was ich auf den ersten Blick getan habe. Ich versuche erneut, auf meine Batch-Datei zuzugreifen, damit ich meine Antwort mit der richtigen Syntax aktualisieren kann.
Stephen Jennings
@Radek Ich habe meine Antwort mit dem tatsächlich verwendeten Code aktualisiert. Sieht aus wie ich bekam %%Iund %%Jgemischt, und wir müssen den Doppelpunkt als Trennzeichen. Versuchen Sie dies und sehen Sie, wie es geht.
Stephen Jennings
Funktioniert gut (sowohl Batchdatei- als auch Befehlszeilenversionen), wenn cmd als Administrator gestartet wurde. Haben Sie eine Idee, wie ich es als Teil meiner Automatisierungstests über Nacht zum Laufen bringen kann? runasfunktioniert bei mir in diesem Fall nicht.
Radek
Habe es geschafft. Der Trick ist, dass der Befehl zum Ausführen unter Runas tatsächlich cmd.exe ist und das Argument für cmd Ihr Code ist. Ich habe es ohne cmd gemacht.
Radek
0

https://technet.microsoft.com/en-us/sysinternals/handle.aspx

TEST UND ANZEIGE:

for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula notepad.exe') do @echo %i %j                                                                    

AUSFÜHREN:

for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula notepad.exe') do handle.exe -c %j -y -p %i  

AUSFÜHREN UND AUFGABEN:

for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula notepad.exe') do handle.exe -c %j -y -p %i & taskkill /t /f /PID %i                                                       
Alexandre DEFRANCE
quelle
1
Können Sie dies näher erläutern und erklären, wie sich die akzeptierte Antwort (viereinhalb Jahre alt) verbessert ?
Bertieb
Ich sehe, dass Ihre Befehle sich von der akzeptierten Antwort unterscheiden, daher ist dies eine legitime Antwort. Wie jedoch bertieb angegeben, Ihre Antwort muss eine Erklärung, was Ihre Befehle tun und wie sie die OPs Frage zu beantworten. Vielen Dank für Ihren Beitrag zu SuperUser.
Ich sage Reinstate Monica
0

Ausführung aus dem Kontextmenü ohne Bat-Datei. 1) Legen Sie die Datei handle64.exe in C: \ Windows ab. 2) Erstellen Sie ein Registrierungsskript und führen Sie es aus

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\WhatBlockFile]
    "Icon"="C:\\ico\\Buttons\\Annotate_Help.ico"
    "MUIVerb"="Что блокирует?"
    "Position"="Top"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\WhatBlockFile\command]
    @="C:\\Windows\\system32\\Cmd.exe /c C:\\Windows\\handle64.exe -u \"%1\" & pause"
Garric
quelle