Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование политики безопастности 
:(
    Опции темы
DominiK
Дата 31.8.2007, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Панель управления - администрирование - локальная политика безопастности - локальные политики - назначение прав пользователя - Отказ в доступе компьютеру из сети.

Какими winapi функциями, либо ключами в реестре удалить оттуда Гостя.
Кто сталкивался с подобным? smile 
PM MAIL   Вверх
jonie
Дата 31.8.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



ну так если нужен ключ, то
делаем снимой реестра
удаляем применяем изменения
делаем снимок реестра
сравниваем снимки
смотрим.

для снимков можно юзать прикрепленые тулзы.


Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  reutil.7z 57,53 Kb


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
NiJazz
Дата 31.8.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 6
Всего: 23



Наверное не удалить, а отключить?
PM MAIL   Вверх
DominiK
Дата 31.8.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Добавлено @ 22:56
Цитата(jonie @ 31.8.2007,  21:04)
ну так если нужен ключ, то
делаем снимой реестра
удаляем применяем изменения
делаем снимок реестра
сравниваем снимки
смотрим.

для снимков можно юзать прикрепленые тулзы.

Я сделал 2 снимка, а потом compare.exe использовал, он создал еще 2 файла.Вообщем какой утилитой посмотреть изменения...
Оставь свой номер ICQ.

Это сообщение отредактировал(а) DominiK - 31.8.2007, 23:02
PM MAIL   Вверх
jonie
Дата 31.8.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



reditor там же лежит в архиве... и вообще почитать readme Тоже стОит...
ЗЫ: аська - быдло IM, я юзаю jabber)

Это сообщение отредактировал(а) jonie - 31.8.2007, 23:37


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Pulse69
Дата 1.9.2007, 02:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 28.4.2006
Где: Хабаровск

Репутация: 8
Всего: 10



Лучше использовать Local Security Authority. С помощью реестра это сделать будет труднее, так как придётся возиться с User Security Identifier's, и т.д.
Вот код для удаления политики "Отказ в доступе к компьютеру из сети".

Код

// dnl.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#include <windows.h>
#include <ntsecapi.h>
#include <tchar.h>




#ifndef STATUS_SUCCESS
    #define STATUS_SUCCESS 0
#endif



PSID GetSIDInformation (LPWSTR server, LPWSTR AccountName)
{
    PSID psid    = NULL;
    DWORD dwSize = 0;

    TCHAR *buf  = NULL;
    DWORD dwBuf = 0;

    SID_NAME_USE siu;

    //    Узнаем необходимые размеры буферов
    LookupAccountName( server,
        AccountName,
        NULL,
        &dwSize,
        NULL,
        &dwBuf,
        &siu );

    //    Выделим память под буферы
    psid = operator new ( dwSize );//    За освобождение этого указателя отвечает вызывающая функция
    buf  = (TCHAR*)operator new ( dwBuf*sizeof( TCHAR ) );

    //    Получим описатель безопасности
    if(!LookupAccountName( server,
        AccountName,
        psid,
        &dwSize,
        buf,
        &dwBuf,
        &siu ))
    {
        if( buf ) operator delete ( buf );
        if( psid) operator delete ( psid );
        return NULL;
    }

    //    нам не нужны имена доменов, в которых происходил поиск
    if( buf ) operator delete ( buf );

    return psid;
}


LSA_HANDLE GetPolicyHandle(wchar_t *SystemName)
{
    LSA_OBJECT_ATTRIBUTES ObjectAttributes;
    USHORT SystemNameLength;
    LSA_UNICODE_STRING lusSystemName;
    NTSTATUS ntsResult;
    LSA_HANDLE lsahPolicyHandle;

    //    Инициализация
    ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));

    //    Инициализация
    SystemNameLength = (SystemName!=NULL)?static_cast<USHORT>(wcslen(SystemName)):0;
    lusSystemName.Buffer = SystemName;
    lusSystemName.Length = SystemNameLength * sizeof(WCHAR);
    lusSystemName.MaximumLength = (SystemNameLength+1) * sizeof(WCHAR);

    // Get a handle to the Policy object.
    ntsResult = LsaOpenPolicy(
        &lusSystemName,    //Name of the target system.
        &ObjectAttributes, //Object attributes.
        POLICY_ALL_ACCESS, //Desired access permissions.
        &lsahPolicyHandle  //Receives the policy handle.
        );

    if (ntsResult != STATUS_SUCCESS)
    {
        // An error occurred. Display it as a win32 error code.
        return NULL;
    } 
    return lsahPolicyHandle;
}



bool InitLsaString( PLSA_UNICODE_STRING pLsaString,
                    LPCWSTR pwszString )
{
    DWORD dwLen = 0;    

    if (NULL == pLsaString)
        return FALSE;

    //    Длина строки
    if (NULL != pwszString) 
    {
        dwLen = static_cast<int>(wcslen(pwszString));
        if (dwLen > 0x7ffe)   // Слишком большая строка
            return FALSE;
    }

    // Сохраняем строку
    pLsaString->Buffer = (WCHAR *)pwszString;
    pLsaString->Length =  (USHORT)dwLen * sizeof(WCHAR);
    pLsaString->MaximumLength= (USHORT)(dwLen+1) * sizeof(WCHAR);

    return TRUE;
}


BOOL SetPolicy( wchar_t* server, wchar_t *wacct, wchar_t *policy, bool add )
{
    //    Получаем описатель безопасности для учётной записи
    PSID psid =  GetSIDInformation( server, wacct );
    //    Получаем дескриптор политик для компьютера
    LSA_HANDLE  ph = GetPolicyHandle( server );
    LSA_UNICODE_STRING lucPrivilege;
    NTSTATUS ntsResult;

    //    Создаём LSA-строку
    if (!InitLsaString(&lucPrivilege, policy))
    {
        return FALSE;
    }

    //    Добавляем политику
    if( add )
    {
        ntsResult = LsaAddAccountRights(ph,    psid, &lucPrivilege, 1 );     
    }
    else
    {
        ntsResult = LsaRemoveAccountRights( ph, psid, FALSE, &lucPrivilege, 1 );
    }

    BOOL bRet;
    if (ntsResult == STATUS_SUCCESS) 
    {
        bRet = TRUE;
    }
    else
    {
        bRet =  FALSE;
    }
    //    закрываем описатель политики
    LsaClose( ph );
    //    удаляем память, выделенную под описатель безопасности УЗ
    operator delete (psid);
    return bRet;
}


/*
    server: имя компьютера, или NULL для локального
    user:   доменное имя пользователя для которого запрещается вход.
*/
BOOL RemoveDenyNetworkLogonRight( wchar_t *server, wchar_t *user )
{
    return SetPolicy( server, user,  TEXT("SeDenyNetworkLogonRight"), false );
}

int _tmain(int argc, _TCHAR* argv[])
{
    RemoveDenyNetworkLogonRight( NULL, L"Гость" );
    return 0;
}





Это сообщение отредактировал(а) Pulse69 - 1.9.2007, 07:31
--------------------
Ctrl+Alt+Reset 
PM MAIL   Вверх
DominiK
Дата 1.9.2007, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Цитата(Pulse69 @ 1.9.2007,  02:58)
Лучше использовать Local Security Authority. С помощью реестра это сделать будет труднее, так как придётся возиться с User Security Identifier's, и т.д.
Вот код для удаления политики "Отказ в доступе к компьютеру из сети".

Код

// dnl.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


#include <windows.h>
#include <ntsecapi.h>
#include <tchar.h>




#ifndef STATUS_SUCCESS
    #define STATUS_SUCCESS 0
#endif



PSID GetSIDInformation (LPWSTR server, LPWSTR AccountName)
{
    PSID psid    = NULL;
    DWORD dwSize = 0;

    TCHAR *buf  = NULL;
    DWORD dwBuf = 0;

    SID_NAME_USE siu;

    //    Узнаем необходимые размеры буферов
    LookupAccountName( server,
        AccountName,
        NULL,
        &dwSize,
        NULL,
        &dwBuf,
        &siu );

    //    Выделим память под буферы
    psid = operator new ( dwSize );//    За освобождение этого указателя отвечает вызывающая функция
    buf  = (TCHAR*)operator new ( dwBuf*sizeof( TCHAR ) );

    //    Получим описатель безопасности
    if(!LookupAccountName( server,
        AccountName,
        psid,
        &dwSize,
        buf,
        &dwBuf,
        &siu ))
    {
        if( buf ) operator delete ( buf );
        if( psid) operator delete ( psid );
        return NULL;
    }

    //    нам не нужны имена доменов, в которых происходил поиск
    if( buf ) operator delete ( buf );

    return psid;
}


LSA_HANDLE GetPolicyHandle(wchar_t *SystemName)
{
    LSA_OBJECT_ATTRIBUTES ObjectAttributes;
    USHORT SystemNameLength;
    LSA_UNICODE_STRING lusSystemName;
    NTSTATUS ntsResult;
    LSA_HANDLE lsahPolicyHandle;

    //    Инициализация
    ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));

    //    Инициализация
    SystemNameLength = (SystemName!=NULL)?static_cast<USHORT>(wcslen(SystemName)):0;
    lusSystemName.Buffer = SystemName;
    lusSystemName.Length = SystemNameLength * sizeof(WCHAR);
    lusSystemName.MaximumLength = (SystemNameLength+1) * sizeof(WCHAR);

    // Get a handle to the Policy object.
    ntsResult = LsaOpenPolicy(
        &lusSystemName,    //Name of the target system.
        &ObjectAttributes, //Object attributes.
        POLICY_ALL_ACCESS, //Desired access permissions.
        &lsahPolicyHandle  //Receives the policy handle.
        );

    if (ntsResult != STATUS_SUCCESS)
    {
        // An error occurred. Display it as a win32 error code.
        return NULL;
    } 
    return lsahPolicyHandle;
}



bool InitLsaString( PLSA_UNICODE_STRING pLsaString,
                    LPCWSTR pwszString )
{
    DWORD dwLen = 0;    

    if (NULL == pLsaString)
        return FALSE;

    //    Длина строки
    if (NULL != pwszString) 
    {
        dwLen = static_cast<int>(wcslen(pwszString));
        if (dwLen > 0x7ffe)   // Слишком большая строка
            return FALSE;
    }

    // Сохраняем строку
    pLsaString->Buffer = (WCHAR *)pwszString;
    pLsaString->Length =  (USHORT)dwLen * sizeof(WCHAR);
    pLsaString->MaximumLength= (USHORT)(dwLen+1) * sizeof(WCHAR);

    return TRUE;
}


BOOL SetPolicy( wchar_t* server, wchar_t *wacct, wchar_t *policy, bool add )
{
    //    Получаем описатель безопасности для учётной записи
    PSID psid =  GetSIDInformation( server, wacct );
    //    Получаем дескриптор политик для компьютера
    LSA_HANDLE  ph = GetPolicyHandle( server );
    LSA_UNICODE_STRING lucPrivilege;
    NTSTATUS ntsResult;

    //    Создаём LSA-строку
    if (!InitLsaString(&lucPrivilege, policy))
    {
        return FALSE;
    }

    //    Добавляем политику
    if( add )
    {
        ntsResult = LsaAddAccountRights(ph,    psid, &lucPrivilege, 1 );     
    }
    else
    {
        ntsResult = LsaRemoveAccountRights( ph, psid, FALSE, &lucPrivilege, 1 );
    }

    BOOL bRet;
    if (ntsResult == STATUS_SUCCESS) 
    {
        bRet = TRUE;
    }
    else
    {
        bRet =  FALSE;
    }
    //    закрываем описатель политики
    LsaClose( ph );
    //    удаляем память, выделенную под описатель безопасности УЗ
    operator delete (psid);
    return bRet;
}


/*
    server: имя компьютера, или NULL для локального
    user:   доменное имя пользователя для которого запрещается вход.
*/
BOOL RemoveDenyNetworkLogonRight( wchar_t *server, wchar_t *user )
{
    return SetPolicy( server, user,  TEXT("SeDenyNetworkLogonRight"), false );
}

int _tmain(int argc, _TCHAR* argv[])
{
    RemoveDenyNetworkLogonRight( NULL, L"Гость" );
    return 0;
}



Спасибо тебе!

Где об этом почитать можно? 
PM MAIL   Вверх
Pulse69
Дата 1.9.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 28.4.2006
Где: Хабаровск

Репутация: 8
Всего: 10



Могу дать только ссылку на документацию.
MSDN->Help->Contents->Win32 And COM Development->Security->Management.

--------------------
Ctrl+Alt+Reset 
PM MAIL   Вверх
DominiK
Дата 1.9.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Цитата(Pulse69 @ 1.9.2007,  10:10)
Могу дать только ссылку на документацию.
MSDN->Help->Contents->Win32 And COM Development->Security->Management.

Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.