Кожу я на С++, хочу написать своего мини-трояна, появилось пару вопросов: 1. Как получить свой IP. 2. Как можно получить имена всех подключенных дисков. Система Windows. Помогите пожалуйста. --- И еще вспомнил: 3. Как удалить ключ реестра.
Даю на делфи, переписать на C++, пару минут Определение ip PHP: uses winsock function GetLocalIP: String; const WSVer = $101; var wsaData: TWSAData; P: PHostEnt; Buf: array [0..127] of Char; begin Result := ''; if WSAStartup(WSVer, wsaData) = 0 then begin if GetHostName(@Buf, 128) = 0 then begin P := GetHostByName(@Buf); if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^); end; WSACleanup; end; end; Список дисков PHP: function DiskInDrive(const Drive:char):Boolean; var DrvNum:byte; EMode:Word; begin result:=false; DrvNum:=ord(Drive); if DrvNum >= ord('a') then dec(DrvNum, $20); EMode:=SetErrorMode(SEM_FAILCRITICALERRORS); try if DiskSize(DrvNum - $40) <> -1 then result:=true else messagebeep(0); finally SetErrorMode(EMode); end; end; var Alfavit:string[26]='ABCDEFGHIJKLMNOPQRSTUVWXYZ'; AlfavitCount:integer; DiskList: TStringList; begin DiskList:=TStringList.Create; for AlfavitCount:=0 to 25 do begin if DiskInDrive(Alfavit[AlfavitCount]) then DiskList.Add(Alfavit[AlfavitCount]); end; DiskList.Free; end; В списке DiskList список дисков. Если сам переводить не умеешь попроси кого-нибудь. Да и чуть не забыл когда будешь писать воспользуйся тремя китами парадигмы ООП, это очень важно, удачи тебе рукодельник.
Code: Функция RegDeleteKey удаляет указанный ключ. Эта функция не может удалить ключ, которяй является подключем. LONG RegDeleteKey( HKEY hKey, // дескриптор открытого окна LPCTSTR lpSubKey // адрес имени подключа на удаление ); Параметры: hKey Идентифицирует уже открытый ключ или один из предопределенных дескрипторов: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG Ключ, указанный в параметре lpSubKey должен быть подключем ключа, указанного в hKey. lpSubKey Адрес нульзаканчивающейся строки, указывающей имя ключа на удаление. Этот параметр не может быть NULL, и указанный ключ не должен иметь подключей. Возвращаемые значения: Если функция успешна, возвращается значение ERROR_SUCCESS. Header Declared in Winreg.h; include Windows.h. Library Use Advapi32.lib. © msdn
Code: /* Заголовочный файл winsock2.h используеться для * Виндовс систем, на Линукс дистрибутивах * используют заголовочные файлы * -> <arpa/net.h> * -> <netinet/in.h> * -> <sys/socket.h> * */ [COLOR=DarkOrange]#include <winsock2.h> #include <stdio.h> int main(void) {[/COLOR] /* WSADATA структура для содержании информации * о winsock,используеться только для виндовс */ [COLOR=DarkOrange]WSADATA wsd; struct hostent *host; struct in_addr addr; char name[32]; unsigned int buffsize = strlen(name); [/COLOR] /* Для того чтобы работать с winsock ты должен * ее загрузить с помощью функции WSAStartup() */ [COLOR=DarkOrange]if(WSAStartup(MAKEWORD(2,2),&wsd) == 0) { GetComputerNameA(name,&buffsize); host = gethostbyname(name); if(host != NULL) { memcpy(&addr,host->h_addr_list[0],sizeof(host->h_addr_list[0])); printf([/COLOR][COLOR=Red]"Your IP address is %s\n"[/COLOR][COLOR=DarkOrange],inet_ntoa(addr)); } }[/COLOR] } Вот исходной код написанный на C,должен работать в любом C++ компиляторе,в Microsoft Visual C++ приходиться подключить библиотеку ws2_32.lib,хотя название этой библиотеки точно не помню.
Скомпилил я этот код, появился екзешник, при запуске окошко мелькнуло и все. Подскажите как работает эта прога?