Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2018, 17:47   #1
Darius88
Новичок
Джуниор
 
Регистрация: 23.12.2018
Сообщений: 14
По умолчанию Проверка учетных записей(база данных)

Здравствуйте, как произвести проверку учетных записей по параметрам в консольном:
1) Для всех ли пользователей из списка созданы учётные записи, допустим админ,пользователь и гость.
2) Все ли пользователи принадлежат к указанным в списке группам
3) Не устарели ли пароли.
О результатах проверки и возможных ошибках программа отчитывается в текстовом файле.
Короткие сообщения, например "всё в порядке" выводит на экран.
Darius88 вне форума Ответить с цитированием
Старый 24.12.2018, 17:57   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Darius88 Посмотреть сообщение
1) Для всех ли пользователей из списка созданы учётные записи, допустим админ,пользователь и гость.
Запросить всех пользователей и проверить, если список большой. Если один, два можно и на базе.

Цитата:
Сообщение от Darius88 Посмотреть сообщение
2) Все ли пользователи принадлежат к указанным в списке группам
Запросить группы и проверить связи.

Цитата:
Сообщение от Darius88 Посмотреть сообщение
3) Не устарели ли пароли.
Запросить дату изменения пароля и сравнить с текущей. Можно выбрать только тех у кого устарели и проверить сколько строк вернулось, если надо выводить кто просрочил. Или сразу каунтом на бд, если нет.
p51x на форуме Ответить с цитированием
Старый 24.12.2018, 18:11   #3
Darius88
Новичок
Джуниор
 
Регистрация: 23.12.2018
Сообщений: 14
По умолчанию

123123

Последний раз редактировалось Darius88; 24.12.2018 в 18:13.
Darius88 вне форума Ответить с цитированием
Старый 24.12.2018, 18:12   #4
Darius88
Новичок
Джуниор
 
Регистрация: 23.12.2018
Сообщений: 14
По умолчанию

Эмм, это как? Перерыл учебник А. Побегайло, не нашел такого, не понимаю, это единственная программа из практики, которую не понятно как делать и какой код
Darius88 вне форума Ответить с цитированием
Старый 24.12.2018, 18:37   #5
Darius88
Новичок
Джуниор
 
Регистрация: 23.12.2018
Сообщений: 14
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Запросить всех пользователей и проверить, если список большой. Если один, два можно и на базе.


Запросить группы и проверить связи.



Запросить дату изменения пароля и сравнить с текущей. Можно выбрать только тех у кого устарели и проверить сколько строк вернулось, если надо выводить кто просрочил. Или сразу каунтом на бд, если нет.
Можно попроще, для чайника оъяснить с кодом, пожалуйста?
Darius88 вне форума Ответить с цитированием
Старый 24.12.2018, 19:19   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что не понятно? Вы не можете простой select на выбор имен/логинов пользователей написать?

Вы бы хоть структуру своей базы показали...
p51x на форуме Ответить с цитированием
Старый 25.12.2018, 09:26   #7
Darius88
Новичок
Джуниор
 
Регистрация: 23.12.2018
Сообщений: 14
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Что не понятно? Вы не можете простой select на выбор имен/логинов пользователей написать?

Вы бы хоть структуру своей базы показали...
Вот код сам, но при компиляции выдает фигню, так же при переводе из типа данных LPWSTR в тип данных string то же самое, все на скринах.
Код:
#include "pch.h"
#include <stdlib.h>
#include <windows.h>
#include <iostream>
#include <lm.h>
#include <clocale>
#include <fstream>
#include <string>
#include <assert.h>

#pragma comment (lib, "netapi32.lib")
using namespace std;



int main()
{
	setlocale(LC_CTYPE, "rus");

	USER_INFO_0 *user_list;
	DWORD a, b;
	cout << "Список польователей\n";
	NetUserEnum(NULL, 0, FILTER_NORMAL_ACCOUNT, (LPBYTE*)&user_list, MAX_PREFERRED_LENGTH, &a, &b, NULL);
	std::ofstream out;          // поток для записи
	out.open("E:\\hello.txt");
	std::string line;
	std::ifstream in("D:\\hello.txt");
	for (DWORD i = 0; i < a; ++i)
	{
		char buffer[20];

		wprintf(L"User name: %s\n", user_list[i].usri0_name);
		size_t wcstombs((buffer, user_list[i].usri0_name, 20));
		string j = string(buffer);
		cout << j;
		out << user_list[i].usri0_name << std::endl;
		while (getline(in, line))
		{
			std::cout << line << std::endl;
		}

	}
	out.close();
	in.close();
	/*
	cout << "\nИнформация о польователях\n";
	USER_INFO_2 *uii;
	NET_API_STATUS ret_status; // код возврата из функции
	for (DWORD i = 0; i < 5; i++)
	{
		ret_status = NetUserGetInfo(NULL, user_list[i].usri0_name, 1, (LPBYTE*)&uii);
		wprintf(L"User name: %s\n", uii->usri2_name);
		wprintf(L"User commemnt: %s\n", uii->usri2_comment);
	}

	NetApiBufferFree(uii);


	cout << "\nСписок групп и информация\n";
		GROUP_USERS_INFO_0 *ui; // информация о группах
		DWORD entries_read; // количество прочитанных групп
		DWORD total_entries; // общее количество групп
		NET_API_STATUS ret_status1; // код возврата из функции
			for (DWORD i = 0; i < 1; i++)
				{
					ret_status1 = NetUserGetGroups(NULL, user_list[i].usri0_name, 0, (LPBYTE*)&ui, MAX_PREFERRED_LENGTH, &entries_read, &total_entries);
						for (DWORD j = 0; j < 5; j++)
							wprintf(L"%s: %s\n", user_list[j].usri0_name, ui[j].grui0_name);
				}
		NetApiBufferFree(ui); // освобождаем буфер
	NetApiBufferFree(user_list);*/
	system("pause");
	return 0;
}
Изображения
Тип файла: jpg Снимок.JPG (18.1 Кб, 64 просмотров)
Тип файла: png Screenshot_25.png (22.7 Кб, 60 просмотров)

Последний раз редактировалось Darius88; 25.12.2018 в 09:37.
Darius88 вне форума Ответить с цитированием
Старый 25.12.2018, 10:54   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

А причем тут базы данных?
Зачем гонять из юникода в анси?
Почему анси версию string инициализируете юникод-буфером?
Почему юникодовскую строку выводи в анси поток просто так?
p51x на форуме Ответить с цитированием
Старый 25.12.2018, 12:16   #9
Darius88
Новичок
Джуниор
 
Регистрация: 23.12.2018
Сообщений: 14
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А причем тут базы данных?
Зачем гонять из юникода в анси?
Почему анси версию string инициализируете юникод-буфером?
Почему юникодовскую строку выводи в анси поток просто так?
Ответ прост - я не знаю
Darius88 вне форума Ответить с цитированием
Старый 25.12.2018, 12:25   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так откройте справку и посмотрите пример https://docs.microsoft.com/en-us/win...ss-netuserenum
И про NetApiBufferFree не надо забывать.
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где в реестре хранятся атрибуты учетных записей MAE$TRO Windows 1 04.11.2015 00:11
Получить список админиских учетных записей Windows garuna Общие вопросы Delphi 1 19.09.2015 19:37
Как получить список учетных записей компьютера? garuna Общие вопросы Delphi 0 18.09.2015 13:54
База данных на 200000 записей и более il13 БД в Delphi 0 02.12.2009 18:20
Экспорт учетных записей windows server 2003 ru3000 Безопасность, Шифрование 1 27.07.2009 16:30