How to delete 'Locked Files'?
how to delete 'locked files'?
I found a source from CodeGuru.
but, I'm not skilled VC++.
How embed to NSIS 1.96 source?
Source code by Zoltan Csizmadia./*
DWORD(__stdcall *)(void*))GetProcAddress(hKernel32,"CloseHandle"),
Note: 1. SE_DEBUG privilege must be enabled.
2. The function works with every kind of HANDLE
3. It will bother the remote process :)
4. The handles will be invalid after you closed
them remotely
*/
//Close a handle in a remote process
>DWORD CloseRemoteHandle( DWORD processID, HANDLE handle )
{
>HANDLE ht = 0;
>DWORD rc = 0;
>_tprintf( _T("Closing handle in process #%d ... "),
processID );
// open the process
>HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD
| PROCESS_VM_OPERATION
| PROCESS_VM_WRITE
| PROCESS_VM_READ,
FALSE, processID );
if (hProcess == NULL )
{
rc = GetLastError();
_tprintf( _T("OpenProcess() failed\n") );
returnrc;
}
// load kernel32.dll
>HMODULE hKernel32 = LoadLibrary( _T("kernel32.dll") );
// CreateRemoteThread()
>ht = CreateRemoteThread(
hProcess,
0,
0,
(
handle,
0,
&rc );
if (ht == NULL )
{
//Something is wrong with the privileges,
//or the process doesn't like us
rc = GetLastError();
_tprintf( _T("CreateRemoteThread() failed\n") );
goto cleanup;
}
switch (WaitForSingleObject( ht, 2000 ) )
{
caseWAIT_OBJECT_0:
//Well done
rc = 0;
_tprintf( _T("Ok\n"), rc );
break;
default:
//Oooops, shouldn't be here
rc = GetLastError();
_tprintf( _T("WaitForSingleObject() failed\n") );
goto cleanup;
break;
}
>cleanup:
//Closes the remote thread handle
>CloseHandle( ht );
//Free up the kernel32.dll
>if ( hKernel32 != NULL)
FreeLibrary( hKernel32 );
//Close the process handle
>CloseHandle( hProcess );
returnrc;
}
original source url : http://www.codeguru.com/files/ForceDel.shtml