2010-08-18 1 views
2

Мне нужно написать код на C, чтобы извлечь защищенный паролем rar-файл в Windows. Я не знаю, как это сделать. может ли кто-нибудь предложить мне что-то или предоставить образец кода? Я буду очень благодарен.открытие файла rar с помощью c

EDIT:

Это код, я использую, чтобы открыть RAR file.in командной системы Ранджит это пароль. Это дает ошибке undefined symbol_system в модуле + имя файла. Кто-нибудь может мне помочь?? Я борюсь с этим с двух дней. EDIT: этот код открывает архив, но не извлекает его. Если я использую команду unrar в командной строке, она извлекает файл. Что мне делать?

#include<stdio.h> 
#include<stdlib.h> 
int main(int argc, char **argv) 
    { 
    char file[20]; 
    char file2[50] = "F:\\Program Files\\WinRAR\\unrar.exe"; 
    printf("enter the name of the rar file : "); 
    gets(file); 
    puts(file); 
    system(("%s e -p ranjit %s >C:\stdout.log 2>C:\stderr.log",file2, file)); 
    getchar(); 
    return 0; 
    } 
+1

Здесь вы найдете: http://www.unrarlib.org/download.html (смотрите документацию в источнике) –

ответ

1

Using unrar library - extracting files into a filestream buffer

Но если вы ищете для чистого раствора C, посмотрите на: http://www.unrarlib.org/

Цитата из их FAQ: The URARFileLib (короткое имя для неповторимых RAR Library File , также называемый unrarlib) является бесплатной библиотекой для программистов C для доступа к RAR-архивам.

Другой подход, который я только что прошел успешно, не требует использования внешних библиотек для распаковки rar-файлов. Используйте system() для вызова инструмента командной строки (например, UnRAR) уже установлен в вашей системе, чтобы сделать работу:

system("unrar x -ppassword protected_file.rar /destination_directory"); 

Например, предположим, что защищенный файл был назван file.rar, то пароль был и каталог назначения был /дом/пользователь, вы могли бы назвать систему() со следующими параметрами:

system("unrar x -p1234 file.rar /home/user/"); 
+0

Спасибо за помощь, но это в C++, и я ничего не знаю в C++. – narayanpatra

+0

также, filestream sux. не вводите в заблуждение невинных;) –

+0

@karlphillip Я посетил http://www.unrarlib.org/. Они предоставляют exe-файл, а именно. unrarlib. Могу ли я установить его и использовать его для моего кода? Я думал, что это будет файл заголовка. Они выпустили его в 2002 году, будет ли он работать сейчас? – narayanpatra

1

в дополнение к тому, В предложениях karlphilip есть еще пара интересных интересных интересных ресурсов на http://www.rarlabs.com/rar_add.htm.

В частности, я имею в виду unrar.dll и UNRAR источник может быть уместным. Однако я не могу проверить это на мгновении.

+0

Я посетил http://www.rarlabs.com/rar_add.htm. но их заголовочные файлы являются ic C++. Могу ли я использовать их в c ?? – narayanpatra

+0

К сожалению, как я уже сказал, я не могу проверить это на мгновении. Тем не менее, в качестве быстрого gude, если заголовок определяет классы, вы не можете использовать его в C. Если вместо этого он определяет кучу функций, определенных в 'extern 'C" wrappers, то вы, вероятно, хороши, просто компилируйте свои C с компилятором C++, чтобы в процессе стирки возникали проблемы времени выполнения. – torak