создание файла на локальной машине c++
От: briskly  
Дата: 07.12.10 19:40
Оценка:
Только начинаю программировать, так что не пинайте, поиском ничего не нашел.
Собственно, необходимо найти расшариные папки в сети, и засунуть в них нужный файлик.
Но обязательно надо сделать это на с++, без использования c# и .NET.
Смог найти расшареные ресурсы и записать в структуру типа NETRESOURCE. Но дальше застрял. NetResource.dwType==RESOURCETYPE_DISK. Но это мне ничего не дает пробовал тупо юзать SetCurrentDirectory("\\server\share") однако возвращает ошибку всегда.
Подскажите люди добрые может сталкивался кто.
Visual Studio 2008.

09.12.10 09:10: Перенесено модератором из 'C/C++' — Odi$$ey
Re: создание файла на локальной машине c++
От: jazzer Россия Skype: enerjazzer
Дата: 08.12.10 00:17
Оценка: :)
Здравствуйте, briskly, Вы писали:

B>Только начинаю программировать, так что не пинайте, поиском ничего не нашел.

B>Собственно, необходимо найти расшариные папки в сети, и засунуть в них нужный файлик.
Пишем вирус?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: создание файла на локальной машине c++
От: briskly  
Дата: 08.12.10 14:10
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, briskly, Вы писали:


B>>Только начинаю программировать, так что не пинайте, поиском ничего не нашел.

B>>Собственно, необходимо найти расшариные папки в сети, и засунуть в них нужный файлик.
J>Пишем вирус?

Нет, БДЗ.
Re[3]: создание файла на локальной машине c++
От: Аноним  
Дата: 09.12.10 06:28
Оценка:
Здравствуйте, briskly, Вы писали:

B>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, briskly, Вы писали:


B>>>Только начинаю программировать, так что не пинайте, поиском ничего не нашел.

B>>>Собственно, необходимо найти расшариные папки в сети, и засунуть в них нужный файлик.
J>>Пишем вирус?

B>Нет, БДЗ.


Врешь ведь?
Re: создание файла на локальной машине c++
От: McQwerty Россия  
Дата: 09.12.10 10:08
Оценка:
Здравствуйте, briskly, Вы писали:

B>Только начинаю программировать, так что не пинайте, поиском ничего не нашел.

B>Собственно, необходимо найти расшариные папки в сети, и засунуть в них нужный файлик.
B>Но обязательно надо сделать это на с++, без использования c# и .NET.
B>Смог найти расшареные ресурсы и записать в структуру типа NETRESOURCE. Но дальше застрял. NetResource.dwType==RESOURCETYPE_DISK. Но это мне ничего не дает пробовал тупо юзать SetCurrentDirectory("\\server\share") однако возвращает ошибку всегда.
B>Подскажите люди добрые может сталкивался кто.
B>Visual Studio 2008.

Выдрано из живого кода, который искал сервера в сети. Перечисления шар нет, но можно добавить.
NETRESOURCE resource = { 0 };

resource. dwScope = RESOURCE_GLOBALNET;
resource. dwType = RESOURCETYPE_ANY;
resource. dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN;
resource. dwUsage = RESOURCEUSAGE_CONTAINER;
resource. lpLocalName = NULL;
resource. lpRemoteName = NULL;
resource. lpComment = NULL;
resource. lpProvider = NULL;

HANDLE hEnum = 0;

DWORD dwResult = WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER, &resource, &hEnum);

DWORD dwNetworkTypes = -1;
DWORD dwResourcesSize = DEF_RESOURCES_SIZE;

// Получаем список типов сетей
LPNETRESOURCE lpNetworkTypes = (LPNETRESOURCE) new BYTE [dwResourcesSize];
ZeroMemory (lpNetworkTypes, dwResourcesSize);
dwResult = WNetEnumResource (hEnum, &dwNetworkTypes, lpNetworkTypes, &dwResourcesSize);
WNetCloseEnum (hEnum);

// Получаем список доменов
for (DWORD dwNetworkType = 0; (dwNetworkType < dwNetworkTypes); dwNetworkType++)
{
    // Если нужны и не-микрософтовские сети, то закомментарить 2 сточки ниже
     if (lstrcmpi (lpNetworkTypes [dwNetworkType]. lpProvider, TEXT ("Microsoft Windows Network")) != 0)
        continue;

    dwResult = WNetOpenEnum
    (
        RESOURCE_GLOBALNET,
        RESOURCETYPE_ANY,
        RESOURCEUSAGE_CONTAINER,
        lpNetworkTypes + dwNetworkType, &hEnum
    );

    DWORD dwDomains = -1;
    dwResourcesSize = DEF_RESOURCES_SIZE;

    LPNETRESOURCE lpDomains = (LPNETRESOURCE) new BYTE [dwResourcesSize];
    ZeroMemory (lpDomains, dwResourcesSize);
    dwResult = WNetEnumResource (hEnum, &dwDomains, lpDomains, &dwResourcesSize);
    WNetCloseEnum (hEnum);

    for (DWORD dwDomain = 0; (dwDomain < dwDomains); dwDomain++)
    {
        dwResult = WNetOpenEnum
        (
            RESOURCE_GLOBALNET,
            RESOURCETYPE_DISK,
            RESOURCEUSAGE_CONTAINER,
            lpDomains + dwDomain, &hEnum
        );

        DWORD dwServers = -1;
        dwResourcesSize = DEF_RESOURCES_SIZE;

        LPNETRESOURCE lpServers = (LPNETRESOURCE) new BYTE [dwResourcesSize];
        ZeroMemory (lpServers, dwResourcesSize);
        dwResult = WNetEnumResource (hEnum, &dwServers, lpServers, &dwResourcesSize);
        WNetCloseEnum (hEnum);

        for (DWORD dwServer = 0; (dwServer < dwServers); dwServer++)
        {
            // Provider: lpNetworkTypes [dwNetworkType]. lpRemoteName
            //   Domain: lpDomains [dwDomain]. lpRemoteName
            //   Server: lpServers [dwServer]. lpRemoteName + 2

            LPCTSTR lpszComputer = lpServers [dwServer]. lpRemoteName + 2;
            /*
            printf ("Found: %s\\%s\\%s\n", 
                lpNetworkTypes [dwNetworkType]. lpRemoteName,
                lpDomains [dwDomain]. lpRemoteName,
                lpszComputer
            );
            */

            ....Дальше проитерить шары....
        }

        delete [] ((LPBYTE) lpServers);
    }

    delete lpDomains;
}

delete [] ((LPBYTE) lpNetworkTypes);
Re[2]: создание файла на локальной машине c++
От: briskly  
Дата: 09.12.10 16:26
Оценка:
Здравствуйте, McQwerty, Вы писали:

MQ>Здравствуйте, briskly, Вы писали:



MQ>Выдрано из живого кода, который искал сервера в сети. Перечисления шар нет, но можно добавить.


спасибо большое, правда я уже разобрался, но еще один пример изучить никогда не помешает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.