Часто задаваемые вопросы и ответы по C/C++/Visual C++
Последнее обновление: 27.08.2003
FAQ по C/C++/Visual C++
Работа с сетью
Как расшарить папку
Вариант 2 (NT)
Составители: SUnteXx, Leprecon
Как расшарить папку
A: (Drunkard)
Оригинальная ссылка: нету

Вариант 2 (NT)
// Открытие общего доступа к папке в WinNT, Win2000
// Один из самых простых способов по критерию трудозатрат программиста
// Для организации общего доступа используем командный процессор и команду net.
// С этой целью в командной строке следовало бы написать, например :
// net share sharefold=d:\temp\myserv
// Вот и реализуем этот метод через функцию на языке С
// Полное описание net share смотри по команде net help share

#include <stdlib.h>
// Описание функции
BOOL OpenShareNT(char* NetName, char* LocalName);
// В случае успеха возвращает TRUE, иначе FALSE.
// Первый параметр: LocalName - полный локальный путь к "расшариваемой" папке
// например "d:\\temp\\myserv" (Внимание! Путь не должен заканчиваться символом '\\')
// Второй параметр: NetName - имя, которое будет видно в сети (например "sharefold")

BOOL OpenShareNT(char* LocalName, char* NetName)
{
    BOOL AddShare=FALSE;
    char Str[MAX_PATH];
    int Error;
// Проверим доступен ли командный процессор
    Error=system(NULL);

    if(Error < 0)
    {
     // Обработчик ошибки: Командный процессор Windows недоступен.
    }
    else
    {
        sprintf(Str, "net share %s=%s", NetName, LocalName);
// При исполнении системной команды мелькнет черный экран - не пугайтесь :)
        Error=system(Str);

        if(Error < 0)
        {
         // Обработчик ошибки: Невозможно открыть Общий доступ к папке.
        }
        else AddShare=TRUE; // Успешно
    }
    return AddShare;
}

// Закрытие общего доступа к папке в WinNT, Win2000
#include <stdlib.h>
// Описание функции
BOOL CloseShareNT(char* NetName);
// В случае успеха возвращает TRUE, иначе FALSE.
// Параметр: NetName - существующее сетевое имя

BOOL CloseShareNT(char* NetName)
{
    BOOL CloseShare=FALSE;

    char Str[MAX_PATH];
    int Error;
// Проверим доступен ли командный процессор
    Error=system(NULL);

    if(Error < 0)
    {
     // Обработчик ошибки: Командный процессор Windows недоступен.
    }
    else
    {
        sprintf(Str, "net share %s /DELETE", NetName);
// При исполнении системной команды мелькнет черный экран - не пугайтесь :)
        Error=system(Str);
        if(Error < 0)
        {
         // Обработчик ошибки: Невозможно закрыть Общий доступ к папке.
        }
        else CloseShare=TRUE; // Успешно
    }
    return CloseShare;
}
Очевидно, что обе функции легко объединить в одну, и добавив третий параметр в список параметров первой функции, анализировать действие, толи открывать доступ, толи закрывать.
Содержание Обсудить на форуме « Предыдущая статья | Следующая статья »
Перейти к FAQ:  
FAQ составлен по материалам Форума на Исходниках.Ру.
Copyright © 2002 by Sources.ru. All rights reserved.