Assumindo que você já esteja executando o programa como Administrador (como eu recebi quando recebi esta mensagem).
Se você der uma olhada no código fonte do sdelete ( eu achei aqui ), você pode ver que está tentando criar um arquivo temporário para usar no processo de zerar.
_stprintf( tempFileName, _T("%sSDELTEMP"), DrivePath );
hTempFile = CreateFile( tempFileName, GENERIC_WRITE,
0, NULL, CREATE_NEW,
FILE_FLAG_NO_BUFFERING|FILE_FLAG_SEQUENTIAL_SCAN|
FILE_FLAG_DELETE_ON_CLOSE|FILE_ATTRIBUTE_HIDDEN, NULL );
if( hTempFile == INVALID_HANDLE_VALUE ) {
_tprintf( _T("Could not create free-space cleanup file: "));
PrintWin32Error( GetLastError());
return FALSE;
}
No meu caso, a variável de ambiente TEMP foi definida como "C: \ Usuários \ Nome do usuário \ AppData \ Local \ Temp \ 1" e esse diretório não existia.
Para verificar sua variável de ambiente para TEMP, abra um prompt do CMD e digite SET TEMP . Isso imprimirá o valor dessa variável de ambiente.
No meu caso, eu estava preparando o sistema operacional como um modelo de imagem de ouro. Eu tinha acabado de limpar a pasta Temp e estava indo para zerar e redefinir a unidade C :. Eu recriou o diretório ausente e tudo funcionou como esperado.