Коммит cf6279a6 создал по автору Uvarov-A-F's avatar Uvarov-A-F
Просмотр файлов

The addition of files has been completed

владельцы
Файл добавлен
Файл добавлен
// *****************************************************
// * File: CreateEventLog.alf
// * Author: ..
// * Date: 03.10.2014 11.03.2020
// * Time: 11:04
// * Version: 1.2
// * Notes: HTML
// *
// *****************************************************
#off_wait
#on_debugmess
program CreateEventLog;
const
//
//
NAME = 0;
// IP
IP = 1;
//
USER = 2;
//
PASSWORD = 3;
//
LOGFILE = 4;
//
EVENTTYPE = 5;
//
BEGDATE = 6;
//
ENDDATE = 7;
//
PATHAPP = 8;
var
//
sNameFile : string;
//
sSQL : string;
//
oServ : server;
//
oCol : obj;
//
aParam : array 0 of string;
// HTML
sData : string;
// *************************************************************
// * Function: CreateStrEvent
// * Notes:
// *
function CreateStrEvent (sEventType : string): string;
var
aEventType : array 0 of string;
sEvent : string;
nI : int;
nNum : int;
begin
aEventType := Split(sEventType, ",");
nNum := Len(aEventType) - 1;
for nI := 0 to nNum
if (nI = 0) and (nI = nNum) then
sEvent := " AND EventType = " + aEventType[nI];
elsif nI = 0 then
sEvent := " AND (EventType = " + aEventType[nI];
elsif nI < nNum then
sEvent := sEvent + " OR EventType = " + aEventType[nI];
elsif nI = nNum then
sEvent := sEvent + " OR EventType = " + aEventType[nI] + ")";
endif;
endfor;
result := sEvent;
end;
// *** End of CreateStrEvent ***
// *************************************************************
// * Function: LogAlertReport - 22.03.2006 14:01
// * Notes: HTML
// *
function LogAlertReport(oCol : obj; sLogFile : string;
sBegDate : string; sEndDate : string;
sNameServer : string): string;
var
oData : obj;
sCurDate : string;
sCurTime : string;
sMess : string;
sType : string;
sColor : string;
sMean : string;
nI : int;
nNum : int;
begin
sCurDate := Date();
sCurTime := Time();
sMess := "";
sMess := sMess + "<HTML>" + CRLF();
sMess := sMess + "<HEAD>" + CRLF();
sMess := sMess + "<META http-equiv=" + ApostStr("Content-Type") +
"content=" + ApostStr("text/html; charset=windows-1251") +
">" + CRLF();
sMess := sMess + "<TITLE> </TITLE>" + CRLF();
sMess := sMess + "</HEAD>" + CRLF();
sMess := sMess + "<BODY>" + CRLF();
sMess := sMess + "<H4> : " + sCurDate + " : " +
sCurTime + " </H4>" + CRLF();
sMess := sMess + "<H1 ALIGN=CENTER> " + sLogFile +
" : " + sNameServer + " </H1>" + CRLF();
sMess := sMess + "<H1 ALIGN=CENTER> " + sBegDate + " " + sEndDate +
" </H1>" + CRLF();
nNum := oCol.Count - 1;
if oCol.Count - 1 < 0 then
sMess := sMess + "<BR>" + CRLF();
sMess := sMess + "<H2 ALIGN=CENTER> ! </H2>" + CRLF();
sMess := sMess + "<BR>" + CRLF();
sMess := sMess + "</BODY>" + CRLF();
sMess := sMess + "</HTML>" + CRLF();
result := sMess;
exit;
endif;
sMess := sMess + "<TABLE BORDER=0>" + CRLF();
foreach oData in oCol
//
sMess := sMess + "<TR BGCOLOR=DDDDDD>" + CRLF();
sMean := WMIToDateTime(oData->GetPropertyValue("TimeWritten"));
sMess := sMess + "<TD> : " + sMean + " </TD>" + CRLF();
//
sMean := oData->GetPropertyValue("ComputerName");
sMess := sMess + "<TD> : " + sMean + " </TD>" + CRLF();
//
sMean := String(oData->GetPropertyValue("EventType"));
if sMean = "1" then
sColor := "RED";
sType := "";
elsif sMean = "2" then
sColor := "YELLOW";
sType := "";
elsif sMean = "3" then
sColor := "BLUE";
sType := "";
elsif sMean = "4" then
sColor := "GREEN";
sType := " - ";
elsif sMean = "5" then
sColor := "RED";
sType := " - ";
endif;
sMess := sMess + "<TD> : " + "<FONT COLOR=" + sColor + "> " + sType +
" </FONT>" + " </TD>" + CRLF();
//
sMean := String(oData->GetPropertyValue("SourceName"));
sMess := sMess + "<TD> : " + sMean + " </TD>" + CRLF();
// (ID)
sMean := String(oData->GetPropertyValue("EventCode"));
if IsEmpty(sMean) then
sMean := "";
endif;
sMess := sMess + "<TD> (ID): " + sMean + " </TD>" + CRLF();
//
sMean := String(oData->GetPropertyValue("User"));
if IsEmpty(sMean) then
sMean := "/";
endif;
sMess := sMess + "<TD> : " + sMean + " </TD>" + CRLF();
sMess := sMess + "</TR>" + CRLF();
//
sMess := sMess + "<TR BGCOLOR=DDDDDD>" + CRLF();
sMean := String(oData->GetPropertyValue("Message"));
sMess := sMess + "<TD COLSPAN=6> " + ": " + sMean +
" </TD>" + CRLF();
sMess := sMess + "</TR>" + CRLF();
//
sMess := sMess + "<TR>" + CRLF();
sMess := sMess + "<TD COLSPAN=6> " + "&#160" + " </TD>" + CRLF();
sMess := sMess + "</TR>" + CRLF();
endforeach;
sMess := sMess + "</TABLE>" + CRLF();
sMess := sMess + "</BODY>" + CRLF();
sMess := sMess + "</HTML>" + CRLF();
result := sMess;
end;
// *** End of LogAlertReport ***********
begin
writeln("CreateEventLog v1.0 UAF");
writeln(" ");
writeln;
ReturnResult(Obj(0));
//
aParam := GetParamStr();
sNameFile := aParam[PATHAPP] + "\Scripts\EventLog.html";
//
if FileExists(sNameFile) then
if DeleteFile(sNameFile) then
writeln(": ", sNameFile, " - ");
else
writeln(": " + Get_ErrMess());
endif;
endif;
//
oServ := CreateServObj(aParam[NAME], aParam[IP],
aParam[USER], aParam[PASSWORD], 30, 180);
//
writeln(" : " + oServ.Host);
if not oServ->Connect() then
writeln(": " + oServ->Get_MessErr());
ReturnResult(1);
exit;
endif;
writeln(" ");
// WMI
sSQL := "SELECT * FROM Win32_NTLogEvent WHERE TimeWritten >= '" +
DateTimeToWMI(aParam[BEGDATE]) + "' AND TimeWritten <= '" +
DateTimeToWMI(aParam[ENDDATE]) + "'" + " AND Logfile = " +
"'" + aParam[LOGFILE] + "'" + CreateStrEvent(aParam[EVENTTYPE]);
// WMI
oCol := oServ->GetQuery(sSQL);
if oCol = nil then
writeln(": ", Get_MessErr());
ReturnResult(1);
exit;
endif;
// HTML
sData := LogAlertReport(oCol, aParam[LOGFILE], aParam[BEGDATE],
aParam[ENDDATE], aParam[NAME]);
//
if not WriteStrFile(sNameFile, sData, 1251) then
writeln(": ", Get_MessErr());
ReturnResult(1);
exit;
endif;
writeln(" : ", sNameFile, " - ");
writeln(" ");
// HTML
if not Run(sNameFile, "", "", false, 0) then
writeln(" !");
ReturnResult(Obj(1));
exit;
endif;
//
writeln("");
end.
// *** End of CreateEventLog.alf *******
// *****************************************************
// * File: GetListLogfile.alf
// * Author: ..
// * Date: 06.10.2014 11.03.2020
// * Time: 09:31
// * Version: 1.2
// * Notes:
// *
// *****************************************************
#off_wait
#on_debugmess
program GetListLogfile;
const
//
//
NAME = 0;
// IP
IP = 1;
//
USER = 2;
//
PASSWORD = 3;
var
//
Serv : server;
//
aParam : array 0 of string;
// *************************************************************
// * Function: CreateListLogfile
// * Notes:
// *
function CreateListLogfile (Serv : server): array of string;
var
sSQL : string;
oCol : obj;
oElem : obj;
aList : array 0 of string;
nI : int;
begin
sSQL := "SELECT * FROM Win32_NTEventlogFile";
oCol := Serv->GetQuery(sSQL);
aList := CreateArray("array of string", oCol.Count);
writeln(" :");
foreach oElem in oCol
aList[nI] := oElem->GetPropertyValue("LogfileName");
writeln(" ", aList[nI]);
nI := nI + 1;
endforeach;
result := aList;
end;
// *** End of CreateListLogfile ***
begin
writeln("GetListLogfile v1.2 UAF");
writeln(" ");
writeln;
//
aParam := GetParamStr();
//
Serv := CreateServObj(aParam[NAME], aParam[IP],
aParam[USER], aParam[PASSWORD], 30, 180);
//
writeln(" : " + Serv.Host);
if not Serv->Connect() then
writeln(": " + Serv->Get_MessErr());
exit;
endif;
//
writeln(" ");
aParam := CreateListLogfile(Serv);
if aParam = nil then
writeln(": ", Get_MessErr());
exit;
endif;
//
ReturnResult(Obj(aParam));
//
writeln("");
end.
// *** End of GetListLogfile.alf *******
Это отличие свёрнуто
//*****************************************************
//* File: CompAccount.cs
//* Author: Уваров А.Ф.
//* Date: 01.12.2020
//* Time: 20:15
//* Version: 1.0.0
//* Notes: Модуль класса описания учетных записей серверов
//*****************************************************
using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace CompAccount {
// класс описание учетных записей серверов
public class DescrServ {
// кодовая страница
private const int CODE_PAGE = 65001;
// определение состояние данных по серверам
public enum DataStatus {
// неопределено
None,
// все нормально
OK,
// нет данных
NoData,
// нет файла
NoFile,
// ошибка формата данных в файле
ErrFormat
};
// индексы массива параметров
// имя сервера
public const int NAME = 0;
// IP адрес
public const int IP = 1;
// пользователь
public const int USER = 2;
// пароль
public const int PASSWORD = 3;
// длина массива параметров
public const int LENGTH = 4;
// текущий статус данных
private DataStatus Stat = DataStatus.None;
// кодовая страница файла описания удаленных компьютнров
private int Code_Page = CODE_PAGE;
// имя приложения
private string Name_App = "";
// компонент TextBox
TextBox TB = null;
// описание сервера
public struct ServRec {
public string Name;
public string IP;
public string User;
public string Password;
}
// массив определения серверов
private ArrayList ServList;
// конструктор класса
public DescrServ () {
this.ServList = new ArrayList();
this.Stat = DataStatus.None;
this.Code_Page = CODE_PAGE;
this.Name_App = "";
this.TB = null;
}
public DescrServ (TextBox TB, string NameApp = "", int CodePage = CODE_PAGE) {
this.ServList = new ArrayList();
this.Stat = DataStatus.None;
this.Code_Page = CodePage;
this.Name_App = NameApp;
this.TB = TB;
}
public DataStatus Status {
get {
return Stat;
}
}
public int CodePage {
get {
return Code_Page;
}
set {
Code_Page = value;
}
}
public string NameApp {
get {
return Name_App;
}
set {
Name_App = value;
}
}
public TextBox WinText {
get {
return TB;
}
set {
TB = value;
}
}
public ServRec this[int Index] {
get {
return (ServRec)ServList[Index];
}
set {
ServList[Index] = value;
}
}
public int Count {
get {
return ServList.Count;
}
}
public string[] GetArrParam (int Index) {
if (ServList.Count == 0 || Index < 0)
return null;
ServRec Rec = (ServRec)ServList[Index];
string[] Arr = new string[LENGTH];
Arr[NAME] = Rec.Name;
Arr[IP] = Rec.IP;
Arr[USER] = Rec.User;
Arr[PASSWORD] = Rec.Password;
return Arr;
}
public string GetName (int Index) {
return ((ServRec)ServList[Index]).Name;
}
public string GetIP (int Index) {
return ((ServRec)ServList[Index]).IP;
}
public string GetUser (int Index) {
return ((ServRec)ServList[Index]).User;
}
public string GetPassword (int Index) {
return ((ServRec)ServList[Index]).Password;
}
public bool ReadFile (string NameFile) {
// объект файлового потока для чтения
StreamReader oFR;
ServRec Serv = new ServRec();
string Str;
ServList.Clear();
if (File.Exists(NameFile))
oFR = new StreamReader(NameFile, Encoding.GetEncoding(Code_Page));
else {
MessageBox.Show("Файл описания удаленных компьютеров: " + NameFile +
" - отсутствует!" + "\r\n",
"Ошибка " + Name_App,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
Stat = DataStatus.NoFile;
return false;
}
try {
while (!oFR.EndOfStream) {
Str = oFR.ReadLine();
Str = Str.Trim();
if ((Str.IndexOf(";") == 0) || (Str.IndexOf("#") == 0) || (Str == ""))
continue;
string[] Arr = Str.Split(new char[] { ',' });
if (Arr.Length == LENGTH) {
Serv.Name = Arr[NAME];
Serv.IP = Arr[IP];
Serv.User = Arr[USER];
Serv.Password = Arr[PASSWORD];
ServList.Add(Serv);
}
else {
MessageBox.Show("Файл: " + NameFile +
" - неправильный формат данных!" + "\r\n",
"Ошибка " + Name_App,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
ServList.Clear();
Stat = DataStatus.ErrFormat;
return false;
}
}
if (ServList.Count == 0) {
MessageBox.Show("Файл: " + NameFile +
" - нет данных!" + "\r\n",
"Ошибка " + Name_App,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
oFR.Close();
StreamWriter oFW = new StreamWriter(NameFile,
true, Encoding.GetEncoding(Code_Page));
oFW.WriteLine("");
oFW.Close();
Stat = DataStatus.NoData;
return false;
}
}
finally {
oFR.Close();
}
this.Stat = DataStatus.OK;
return true;
}
// *************************************************************
// * Function: IniText
// * Notes: Заполнение компонента TextBox шаблоном
// * файла описания удаленных компьютеров
// *
public void IniText () {
TB.Clear();
TB.AppendText(
";-------------------------------------------------------" + "\r\n");
TB.AppendText(
"; " + Name_App + " Файл описания удаленных компьютеров" + "\r\n");
TB.AppendText(
";-------------------------------------------------------" + "\r\n");
TB.AppendText(";" + "\r\n");
TB.AppendText("; Формат файла:" + "\r\n");
TB.AppendText(";<Имя_компьютера>,<IP>,<Пользователь>,<Пароль>" + "\r\n");
TB.AppendText("; ..." + "\r\n");
TB.AppendText(";<Имя_компьютера>,<IP>,<Пользователь>,<Пароль>" + "\r\n");
TB.AppendText(";" + "\r\n");
}
// *** End of IniText ***
// *************************************************************
// * Function: LoadTextBox
// * Notes: Загрузка данных файла в компонент типа TextBox
// *
public void LoadTextBox (string NameFile) {
if (TB != null) {
if (Stat == DataStatus.OK || Stat == DataStatus.None) {
// чтение файла и загрузка содержимого в окно
if (File.Exists(NameFile)) {
// объект файлового потока для чтения
StreamReader oFR = new StreamReader(NameFile, Encoding.GetEncoding(CODE_PAGE));
TB.Clear();
while (!oFR.EndOfStream) {
TB.AppendText(oFR.ReadLine() + "\r\n");
}
oFR.Close();
Stat = DataStatus.OK;
}
else {
IniText();
Stat = DataStatus.OK;
}
}
else {
IniText();
Stat = DataStatus.OK;
}
}
else {
Stat = DataStatus.None;
}
}
// *** End of LoadTextBox ***
// *************************************************************
// * Function: SaveTextBox
// * Notes: Сохранение данных компонента TextBox в файле
// *
public void SaveTextBox (string NameFile) {
string Str = "";
if (TB != null) {
// сохранить отредактированное содержимое компонента TextBox в файле
Str = this.TB.Text;
try {
File.WriteAllText(NameFile, Str, Encoding.GetEncoding(CODE_PAGE));
}
catch (Exception Err) {
MessageBox.Show("Приложение " + Name_App +": " + Err.Message,
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
Stat = DataStatus.ErrFormat;
return;
}
ReadFile(NameFile);
Stat = DataStatus.OK;
}
else {
Stat = DataStatus.None;
}
}
// *** End of SaveTextBox ***
}
}
//*** End of CompAccount.cs ***********
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace ConsoleAPI {
public class ConsoleOUT : IDisposable {
[DllImport("kernel32.dll", SetLastError = true)]
protected static extern bool AllocConsole ();
[DllImport("kernel32.dll", SetLastError = false)]
protected static extern bool FreeConsole ();
[DllImport("kernel32.dll", SetLastError = true)]
protected static extern IntPtr GetStdHandle (int nStdHandle);
[DllImport("kernel32.dll", SetLastError = true)]
protected static extern bool SetStdHandle (int nStdHandle,
IntPtr hConsoleOutput);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
protected static extern IntPtr CreateFile (
string fileName,
int desiredAccess,
int shareMode,
IntPtr securityAttributes,
int creationDisposition,
int flagsAndAttributes,
IntPtr templateFile);
[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true)]
protected static extern bool CloseHandle (IntPtr handle);
private static IntPtr conOut;
private static IntPtr oldOut;
public ConsoleOUT () {
if (oldOut == IntPtr.Zero)
oldOut = GetStdHandle(-11);
if (!AllocConsole())
throw new Exception("AllocConsole");
conOut = CreateFile("CONOUT$", 0x40000000, 2,
IntPtr.Zero, 3, 0, IntPtr.Zero);
if (!SetStdHandle(-11, conOut))
throw new Exception("SetStdHandle");
Stream standard = Console.OpenStandardOutput();
StreamWriter writer = new StreamWriter(standard);
writer.AutoFlush = true;
Console.SetOut(writer);
Console.SetError(writer);
}
public void Dispose () {
if (!CloseHandle(conOut))
throw new Exception("CloseHandle");
conOut = IntPtr.Zero;
if (!FreeConsole())
throw new Exception("FreeConsole");
if (!SetStdHandle(-11, oldOut))
throw new Exception("SetStdHandle");
}
}
}
using System;
using System.Runtime.InteropServices;
namespace FormWithConsole {
internal static class NativeMethods {
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern int AllocConsole ();
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern int FreeConsole ();
[DllImport("kernel32.dll")]
internal static extern IntPtr GetConsoleWindow ();
[DllImport("user32.dll")]
internal static extern bool ShowWindow (IntPtr hWnd, int nCmdShow);
public const int SW_HIDE = 0;
}
}
using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using Ini;
using Microsoft.Win32;
namespace Func {
public class UserProcess {
private const int SLEEP_AMOUNT = 200;
// объект пользовательского процесса
private Process Proc = new Process();
// текущее время ожидания завершения пользовательского процесса
private int ElapsedTime;
// флаг завершения пользовательского процесса
private bool EventHandled;
// обработчик завершения процесса
private EventHandler EventExit;
// получить объект процесса
public Process ObjProc {
get {
return Proc;
}
}
// установить обработчик завершения процесса
public EventHandler OnExit {
set {
EventExit = value;
}
}
//*******************************
//* Function: QuotesStr
//* Notes: Oбрамление строки в двойные кавычки
//*
public string QuotesStr (string Str) {
return !string.IsNullOrWhiteSpace(Str) ?
Str.Contains(" ") && (!Str.StartsWith("\"") && !Str.EndsWith("\"")) ?
"\"" + Str + "\"" : Str :
string.Empty;
}
//*** End of QuotesStr ***********
//*******************************
//* Function: DequotesStr
//* Notes: Удаление обрамления строки в двойных кавычках
//*
public string DequotesStr (string Str) {
if (Str.StartsWith("\"")) {
Str = Str.Substring(Str.IndexOf("\"") + 1);
}
if (Str.EndsWith("\"")) {
Str = Str.Substring(0, Str.Length - 1);
}
return Str;
}
//*** End of DequotesStr ***********
//*******************************
//* Function: ParseStr
//* Notes: Парсинг строки, выделение параметров и помещение их
// в строковый массив
//*
public string[] ParseStr (string Str) {
// начальная позиция параметра в строке
int BegPos = 0;
// конечная позиция параметра в строке
int EndPos = 0;
// длина строки параметров
int Len = 0;
// текущий символ
char Symb;
// флаг параметра
bool FlagPar = false;
// флаг обрамления строки в двойные кавычки
bool FlagQuotes = false;
// флаг удаления символов обрамления
bool FlagDel = false;
// текущий параметр
string Par = "";
// массив параметров
ArrayList ArrPar = new ArrayList();
// определяем длину строки
Len = Str.Length;
for (int i = 0; i < Len; i++) {
Symb = Str[i];
// текущий символ пробел
if (Symb == ' ') {
if (FlagPar) {
if (FlagQuotes) {
if (i < Len)
continue;
}
FlagPar = false;
EndPos = i;
// выделяем текущий параметр
Par = Str.Substring(BegPos, EndPos - BegPos);
if (Par[0] == '\"') {
if (Par[Par.Length - 1] == '\"') {
FlagDel = true;
}
else {
string Err = "Ошибка в строке: " + Str + "\n";
Err = Err + "В конце параметра: " + Par +
" - нет завершающей двойной кавычки!";
throw new Exception(Err);
}
}
// удаляем из параметра символы обрамления
if (FlagDel) {
FlagDel = false;
FlagQuotes = false;
Par = DequotesStr(Par);
}
// помещаем в массив параметров
ArrPar.Add(Par);
}
}
// текущий символ - не пробел;
else {
if (!FlagPar) {
FlagPar = true;
BegPos = i;
if (Str[i] == '\"')
FlagQuotes = true;
}
else {
if (i + 1 == Len) {
EndPos = Len;
// выделяем текущий параметр
Par = Str.Substring(BegPos, EndPos - BegPos);
if (Par[0] == '\"') {
if (Par[Par.Length - 1] == '\"') {
FlagDel = true;
}
else {
string Err = "Ошибка в строке: " + Str + "\n";
Err = Err + "В конце параметра: " + Par +
" - нет завершающей двойной кавычки!";
throw new Exception(Err);
}
}
// удаляем из параметра символы обрамления
if (FlagDel) {
FlagDel = false;
FlagQuotes = false;
Par = DequotesStr(Par);
}
// помещаем в массив параметров
ArrPar.Add(Par);
}
else {
if (Str[i] == '\"' && FlagQuotes)
FlagQuotes = false;
}
}
}
}
// создаем возвращаемый строковый массив параметров
string[] Arr = new string[ArrPar.Count];
ArrPar.CopyTo(Arr);
return Arr;
}
//*** End of ParseStr ***********
//*******************************
//* Function: Run
//* Notes: Запуск пользовательского процесса
//*
public bool Run (string FileName, string Arg, string WorkDir,
bool WaitExit, int TimeWaitExit) {
// текущее время ожидание завершения процесса
ElapsedTime = 0;
// флаг завершения процесса
EventHandled = false;
try {
// устанавливаем имя запускаемого приложения
Proc.StartInfo.FileName = FileName;
// устанавливаем аргументы командной строки
if ((Arg != null) && (Arg != ""))
Proc.StartInfo.Arguments = Arg;
// устанавливаем рабочий каталог
if ((WorkDir != null) && (WorkDir != ""))
Proc.StartInfo.WorkingDirectory = WorkDir;
// устананавливаем время ожидания завершения приложения
// и устанавливаем обработчик завершения приложения
if (WaitExit) {
Proc.EnableRaisingEvents = true;
if (TimeWaitExit == 0)
TimeWaitExit = 30000;
else
TimeWaitExit = TimeWaitExit * 1000;
Proc.Exited += new EventHandler(Proc_Exited);
}
else
TimeWaitExit = 0;
System.Windows.Forms.Application.DoEvents();
// запускаем приложение
Proc.Start();
}
catch (Exception e) {
// произошло исключение при запуске приложения
// перегенирируем исключение
throw new Exception(e.Message);
}
// ждем заданное время завершения работы приложения
if (WaitExit) {
const int SLEEP_AMOUNT = 200;
while (!EventHandled) {
System.Windows.Forms.Application.DoEvents();
ElapsedTime += SLEEP_AMOUNT;
if (ElapsedTime > TimeWaitExit)
break;
Thread.Sleep(SLEEP_AMOUNT);
}
if (!EventHandled) {
// убиваем процесс приложения, за заданное время ожидания
// он не завершился (считаем, что он "завис")
Proc.Kill();
return false;
}
else {
// определяем код завершения приложения
if (Proc.ExitCode == 0) {
Proc.Close();
return true;
}
else {
Proc.Close();
return false;
}
}
}
else {
Proc.Close();
return true;
}
}
//*** End of Run ***********
//*******************************
//* Function: Proc_Exited
//* Notes: Обработчик завершения процесса
//*
private void Proc_Exited (object sender, System.EventArgs e) {
EventHandled = true;
}
//*** End of Proc_Exited ***********
//*******************************
//* Function: RunAlfa
//* Notes: Запуск Alfa процесса
//*
public string RunAlfa (string Arg, string WorkDir, int TimeWaitExit) {
// полное имя Alfa
string FileName = "";
// текущее время ожидание завершения процесса
ElapsedTime = 0;
// получить полное имя Alfa
try {
FileName = App.GetPath("Alfa") + @"\Alfa.exe";
}
catch (Exception e) {
return e.Message;
}
RegistryKey RK = RegistryKey.OpenBaseKey(
RegistryHive.LocalMachine, RegistryView.Registry64);
RK = RK.OpenSubKey(@"SOFTWARE\UAF\Alfa");
if (RK == null)
throw new Exception("Ошибка, Alfa не установлена на компьютере!");
FileName = (string)RK.GetValue("Name");
if (FileName == "" || FileName == null)
return "Ошибка, Alfa не установлена на компьютере!";
// устанавливаем имя запускаемого приложения
Proc.StartInfo.FileName = FileName;
// проверяем аргументы командной строки запуска программы Alfa
if ((Arg == null) || (Arg == ""))
return "Ошибка, не указана программа для запуска!";
else {
string[] Param;
try {
Param = ParseStr(Arg);
}
catch (Exception e) {
return e.Message;
}
string Ext = Path.GetExtension(Param[1]).ToLower();
if (Ext != ".alf" && Ext != ".alfa" && Ext != ".alfc")
return "Ошибка, неверное расширение файла программы!";
if (!File.Exists(Param[1]))
return ("Ошибка. Файл программы: " + Param[1] + " - не существует!");
}
// устанавливаем аргументы командной строки
Proc.StartInfo.Arguments = Arg;
// устанавливаем рабочий каталог
if ((WorkDir != null) && (WorkDir != ""))
Proc.StartInfo.WorkingDirectory = WorkDir;
// устананавливаем время ожидания завершения приложения
if (TimeWaitExit == 0)
TimeWaitExit = 30000;
else
TimeWaitExit = TimeWaitExit * 1000;
try {
System.Windows.Forms.Application.DoEvents();
// запускаем приложение
Proc.Start();
// ожидание завершения процесса
do {
System.Windows.Forms.Application.DoEvents();
if (!Proc.HasExited) {
ElapsedTime += SLEEP_AMOUNT;
if (ElapsedTime > TimeWaitExit) {
// убиваем процесс приложения, за заданное время ожидания
// он не завершился (считаем, что он "завис")
Proc.Kill();
Thread.Sleep(SLEEP_AMOUNT);
return ("Тайм-аут, процесс принудительно завершен!");
}
}
else
break;
} while (!Proc.WaitForExit(SLEEP_AMOUNT));
try {
Thread.Sleep(SLEEP_AMOUNT);
}
catch (Exception e) {
return e.Message;
}
return "";
}
catch (Exception e) {
// произошло исключение при запуске приложения
return e.Message;
}
finally {
if (Proc != null)
Proc.Close();
}
}
//*** End of RunAlfa ***********
//*******************************
//* Function: RunAlfaEx
//* Notes: Запуск Alfa процесса
//*
public bool RunAlfaEx (string Arg, string WorkDir,
int TimeWaitExit, bool Minimized) {
// полное имя Alfa
string FileName = "";
// текущее время ожидание завершения процесса
ElapsedTime = 0;
bool WaitExit = true;
const int SLEEP_AMOUNT = 100;
try {
// получить полное имя Alfa
FileName = App.GetPath("Alfa") + @"\Alfa.exe";
// устанавливаем имя запускаемого приложения
Proc.StartInfo.FileName = FileName;
// проверяем аргументы командной строки запуска программы Alfa
if ((Arg == null) || (Arg == ""))
throw new Exception("Ошибка, не указана программа для запуска!");
else {
string[] Param;
Param = ParseStr(Arg);
string Ext = Path.GetExtension(Param[0]).ToLower();
if (Ext != ".alf" && Ext != ".alfa" && Ext != ".alfc")
throw new Exception("Ошибка, неверное расширение программы!");
if (!File.Exists(Param[0]))
throw new Exception("Ошибка. Файл: " + Param[0] + " - не существует!");
}
// устанавливаем аргументы командной строки
Proc.StartInfo.Arguments = Arg;
// устанавливаем, что запускаемое приложение минимизирует окно
if (Minimized)
Proc.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
// устанавливаем рабочий каталог
if ((WorkDir != null) && (WorkDir != ""))
Proc.StartInfo.WorkingDirectory = WorkDir;
// устананавливаем время ожидания завершения приложения
if (TimeWaitExit == 0)
WaitExit = false;
else {
TimeWaitExit = TimeWaitExit * 1000;
if (EventExit != null) {
Proc.Exited += new EventHandler(EventExit);
Proc.EnableRaisingEvents = true;
}
}
System.Windows.Forms.Application.DoEvents();
// запускаем приложение
Proc.Start();
// ждем заданное время завершения работы приложения
if (WaitExit) {
// ожидание завершения процесса
do {
System.Windows.Forms.Application.DoEvents();
if (!Proc.HasExited) {
ElapsedTime += SLEEP_AMOUNT;
if (ElapsedTime > TimeWaitExit) {
// убиваем процесс приложения, за заданное время ожидания
// он не завершился (считаем, что он "завис")
Proc.Kill();
throw new Exception("тайм-аут при выполнении!");
}
}
else
break;
} while (!Proc.WaitForExit(SLEEP_AMOUNT));
Proc.Close();
return false;
}
return true;
}
catch (Exception e) {
// произошло исключение при запуске приложения
// перегенирируем исключение
throw new Exception(e.Message);
}
finally {
if (EventExit != null) {
Proc.Exited -= new EventHandler(EventExit);
Proc.EnableRaisingEvents = false;
}
}
}
//*** End of RunAlfaEx ***********
}
public static class App {
// определить путь к интерпретатору Alfa
private static string GetPathAlfa () {
string PathAlfa = "";
string NameIni = Path.ChangeExtension(Application.ExecutablePath, ".ini");
if (File.Exists(NameIni)) {
IniFile Ini = new IniFile(NameIni);
PathAlfa = Ini.ReadString("Path", "Alfa", "");
if (!File.Exists(PathAlfa + @"\Alfa.exe"))
return "";
}
return PathAlfa;
}
// определить путь к указанному приложению
public static string GetPath (string NameApp) {
string FileName = "";
// NameApp
if (NameApp.ToLower() ==
Path.GetFileNameWithoutExtension(Application.ExecutablePath).ToLower()) {
// проверяем наличие
FileName = GetPathAlfa();
if (FileName != "")
return Application.StartupPath;
}
// "Alfa"
if (NameApp == "Alfa") {
FileName = GetPathAlfa();
if (FileName != "")
return FileName;
}
RegistryKey RK = RegistryKey.OpenBaseKey(
RegistryHive.LocalMachine, RegistryView.Registry64);
RK = RK.OpenSubKey(@"SOFTWARE\UAF\" + NameApp);
if (RK == null)
throw new Exception("Ошибка, программа " + NameApp +
" не установлена на компьютере!");
FileName = (string)RK.GetValue("Name");
if (FileName == "" || FileName == null)
throw new Exception("Ошибка, программа " + NameApp +
" не установлена на компьютере!");
return Path.GetDirectoryName(FileName);
}
public static string GetDateTime () {
return ("Дата: " + DateTime.Now.ToString("dd.MM.yyyy") +
" Время: " + DateTime.Now.ToString("HH:mm:ss"));
}
public static string[] MatchReg (string S, string Pattern, bool FullForm) {
int I = 0;
string[] Res;
bool Flag = FullForm;
Regex R = new Regex(Pattern);
MatchCollection M = R.Matches(S);
Res = new string[M.Count];
if (Flag) {
foreach (Match match in M) {
Res[I] = match.Value + "|" + Convert.ToString(match.Index);
I++;
}
}
else
foreach (Match match in M) {
Res[I] = match.Value;
I++;
}
return Res;
}
}
}
namespace VLF {
partial class MainForm {
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose (bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
private void InitializeComponent () {
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.gbPeriod = new System.Windows.Forms.GroupBox();
this.lbEndPeriod = new System.Windows.Forms.Label();
this.lbBegPeriod = new System.Windows.Forms.Label();
this.dtpEndDate = new System.Windows.Forms.DateTimePicker();
this.dtpBegDate = new System.Windows.Forms.DateTimePicker();
this.cbHost = new System.Windows.Forms.ComboBox();
this.lbHost = new System.Windows.Forms.Label();
this.lbLogfile = new System.Windows.Forms.Label();
this.cbLogfile = new System.Windows.Forms.ComboBox();
this.clbTypeEvent = new System.Windows.Forms.CheckedListBox();
this.lbTypeEvent = new System.Windows.Forms.Label();
this.btRun = new System.Windows.Forms.Button();
this.btExit = new System.Windows.Forms.Button();
this.btServ = new System.Windows.Forms.Button();
this.ttHelp = new System.Windows.Forms.ToolTip(this.components);
this.gbPeriod.SuspendLayout();
this.SuspendLayout();
//
// gbPeriod
//
this.gbPeriod.Controls.Add(this.lbEndPeriod);
this.gbPeriod.Controls.Add(this.lbBegPeriod);
this.gbPeriod.Controls.Add(this.dtpEndDate);
this.gbPeriod.Controls.Add(this.dtpBegDate);
this.gbPeriod.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.gbPeriod.Location = new System.Drawing.Point(427, 36);
this.gbPeriod.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.gbPeriod.Name = "gbPeriod";
this.gbPeriod.Padding = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.gbPeriod.Size = new System.Drawing.Size(301, 151);
this.gbPeriod.TabIndex = 0;
this.gbPeriod.TabStop = false;
this.gbPeriod.Text = "Период";
//
// lbEndPeriod
//
this.lbEndPeriod.AutoSize = true;
this.lbEndPeriod.Location = new System.Drawing.Point(14, 85);
this.lbEndPeriod.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbEndPeriod.Name = "lbEndPeriod";
this.lbEndPeriod.Size = new System.Drawing.Size(30, 22);
this.lbEndPeriod.TabIndex = 5;
this.lbEndPeriod.Text = "по";
//
// lbBegPeriod
//
this.lbBegPeriod.AutoSize = true;
this.lbBegPeriod.Location = new System.Drawing.Point(14, 35);
this.lbBegPeriod.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbBegPeriod.Name = "lbBegPeriod";
this.lbBegPeriod.Size = new System.Drawing.Size(18, 22);
this.lbBegPeriod.TabIndex = 4;
this.lbBegPeriod.Text = "с";
//
// dtpEndDate
//
this.dtpEndDate.CustomFormat = "yyyy.MM.dd HH:mm:ss";
this.dtpEndDate.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.dtpEndDate.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dtpEndDate.Location = new System.Drawing.Point(56, 85);
this.dtpEndDate.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.dtpEndDate.Name = "dtpEndDate";
this.dtpEndDate.ShowUpDown = true;
this.dtpEndDate.Size = new System.Drawing.Size(225, 32);
this.dtpEndDate.TabIndex = 2;
this.ttHelp.SetToolTip(this.dtpEndDate, "Дата и время конца периода ");
//
// dtpBegDate
//
this.dtpBegDate.CustomFormat = "yyyy.MM.dd HH:mm:ss";
this.dtpBegDate.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.dtpBegDate.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.dtpBegDate.Location = new System.Drawing.Point(56, 35);
this.dtpBegDate.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.dtpBegDate.Name = "dtpBegDate";
this.dtpBegDate.ShowUpDown = true;
this.dtpBegDate.Size = new System.Drawing.Size(225, 32);
this.dtpBegDate.TabIndex = 0;
this.ttHelp.SetToolTip(this.dtpBegDate, "Дата и время начала периода");
this.dtpBegDate.ValueChanged += new System.EventHandler(this.dtpBegDate_ValueChanged);
//
// cbHost
//
this.cbHost.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.cbHost.ForeColor = System.Drawing.SystemColors.ControlText;
this.cbHost.FormattingEnabled = true;
this.cbHost.Location = new System.Drawing.Point(150, 22);
this.cbHost.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.cbHost.Name = "cbHost";
this.cbHost.Size = new System.Drawing.Size(269, 30);
this.cbHost.TabIndex = 1;
this.ttHelp.SetToolTip(this.cbHost, "Список выбора сервера или рабочей станции");
this.cbHost.SelectedIndexChanged += new System.EventHandler(this.cbHost_SelectedIndexChanged);
//
// lbHost
//
this.lbHost.AutoSize = true;
this.lbHost.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbHost.Location = new System.Drawing.Point(21, 22);
this.lbHost.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbHost.Name = "lbHost";
this.lbHost.Size = new System.Drawing.Size(73, 22);
this.lbHost.TabIndex = 2;
this.lbHost.Text = "Сервер";
//
// lbLogfile
//
this.lbLogfile.AutoSize = true;
this.lbLogfile.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbLogfile.Location = new System.Drawing.Point(21, 69);
this.lbLogfile.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbLogfile.Name = "lbLogfile";
this.lbLogfile.Size = new System.Drawing.Size(74, 22);
this.lbLogfile.TabIndex = 3;
this.lbLogfile.Text = "Журнал";
//
// cbLogfile
//
this.cbLogfile.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.cbLogfile.ForeColor = System.Drawing.SystemColors.ControlText;
this.cbLogfile.FormattingEnabled = true;
this.cbLogfile.Location = new System.Drawing.Point(150, 69);
this.cbLogfile.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.cbLogfile.Name = "cbLogfile";
this.cbLogfile.Size = new System.Drawing.Size(269, 30);
this.cbLogfile.TabIndex = 4;
this.ttHelp.SetToolTip(this.cbLogfile, "Список выбора журнала событий");
this.cbLogfile.SelectedIndexChanged += new System.EventHandler(this.cbLogfile_SelectionChangeCommitted);
//
// clbTypeEvent
//
this.clbTypeEvent.CheckOnClick = true;
this.clbTypeEvent.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.clbTypeEvent.ForeColor = System.Drawing.SystemColors.ControlText;
this.clbTypeEvent.FormattingEnabled = true;
this.clbTypeEvent.Location = new System.Drawing.Point(150, 117);
this.clbTypeEvent.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.clbTypeEvent.Name = "clbTypeEvent";
this.clbTypeEvent.Size = new System.Drawing.Size(269, 82);
this.clbTypeEvent.TabIndex = 5;
this.clbTypeEvent.ThreeDCheckBoxes = true;
this.ttHelp.SetToolTip(this.clbTypeEvent, "Список выбора типа события");
this.clbTypeEvent.SelectedIndexChanged += new System.EventHandler(this.clbTypeEvent_SelectedIndexChanged);
//
// lbTypeEvent
//
this.lbTypeEvent.AutoSize = true;
this.lbTypeEvent.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.lbTypeEvent.Location = new System.Drawing.Point(21, 117);
this.lbTypeEvent.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.lbTypeEvent.Name = "lbTypeEvent";
this.lbTypeEvent.Size = new System.Drawing.Size(115, 22);
this.lbTypeEvent.TabIndex = 6;
this.lbTypeEvent.Text = "Тип события";
//
// btRun
//
this.btRun.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btRun.Image = ((System.Drawing.Image)(resources.GetObject("btRun.Image")));
this.btRun.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btRun.Location = new System.Drawing.Point(352, 207);
this.btRun.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.btRun.Name = "btRun";
this.btRun.Size = new System.Drawing.Size(151, 49);
this.btRun.TabIndex = 7;
this.btRun.Text = " Выполнить";
this.btRun.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.ttHelp.SetToolTip(this.btRun, "Выполнить просмотр журнала событий");
this.btRun.UseVisualStyleBackColor = true;
this.btRun.Click += new System.EventHandler(this.btRun_Click);
//
// btExit
//
this.btExit.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btExit.Image = ((System.Drawing.Image)(resources.GetObject("btExit.Image")));
this.btExit.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btExit.Location = new System.Drawing.Point(569, 207);
this.btExit.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.btExit.Name = "btExit";
this.btExit.Size = new System.Drawing.Size(151, 49);
this.btExit.TabIndex = 8;
this.btExit.Text = " Выход";
this.ttHelp.SetToolTip(this.btExit, "Завершение работы и выход из программы");
this.btExit.UseVisualStyleBackColor = true;
this.btExit.Click += new System.EventHandler(this.btExit_Click);
//
// btServ
//
this.btServ.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.btServ.Image = ((System.Drawing.Image)(resources.GetObject("btServ.Image")));
this.btServ.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.btServ.Location = new System.Drawing.Point(24, 207);
this.btServ.Margin = new System.Windows.Forms.Padding(5, 6, 5, 6);
this.btServ.Name = "btServ";
this.btServ.Size = new System.Drawing.Size(151, 49);
this.btServ.TabIndex = 9;
this.btServ.Text = " Серверы";
this.ttHelp.SetToolTip(this.btServ, "Редактирование данных по серверам");
this.btServ.UseVisualStyleBackColor = true;
this.btServ.Click += new System.EventHandler(this.btServ_Click);
//
// ttHelp
//
this.ttHelp.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.ttHelp.ForeColor = System.Drawing.Color.Black;
this.ttHelp.OwnerDraw = true;
this.ttHelp.Draw += new System.Windows.Forms.DrawToolTipEventHandler(this.ttHelp_Draw);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 22F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(741, 267);
this.Controls.Add(this.btServ);
this.Controls.Add(this.btExit);
this.Controls.Add(this.btRun);
this.Controls.Add(this.lbTypeEvent);
this.Controls.Add(this.clbTypeEvent);
this.Controls.Add(this.cbLogfile);
this.Controls.Add(this.lbLogfile);
this.Controls.Add(this.lbHost);
this.Controls.Add(this.cbHost);
this.Controls.Add(this.gbPeriod);
this.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.MaximizeBox = false;
this.Name = "MainForm";
this.Text = "VLF v1.2 UAF Просмотр журнала событий";
this.Shown += new System.EventHandler(this.MainForm_Shown);
this.gbPeriod.ResumeLayout(false);
this.gbPeriod.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.GroupBox gbPeriod;
private System.Windows.Forms.Label lbEndPeriod;
private System.Windows.Forms.Label lbBegPeriod;
private System.Windows.Forms.DateTimePicker dtpEndDate;
private System.Windows.Forms.DateTimePicker dtpBegDate;
private System.Windows.Forms.ComboBox cbHost;
private System.Windows.Forms.Label lbHost;
private System.Windows.Forms.Label lbLogfile;
private System.Windows.Forms.ComboBox cbLogfile;
private System.Windows.Forms.CheckedListBox clbTypeEvent;
private System.Windows.Forms.Label lbTypeEvent;
private System.Windows.Forms.Button btRun;
private System.Windows.Forms.Button btExit;
private System.Windows.Forms.ToolTip ttHelp;
private System.Windows.Forms.Button btServ;
}
}
//#define DEBUG
using System;
using System.Windows.Forms;
using CompAccount;
using Func;
using UAF.Runtime;
using VLFS;
namespace VLF {
public partial class MainForm : Form {
// индексы массива параметров
// журнал
const int LOGFILE = 4;
// тип события
const int EVENTTYPE = 5;
// начальная дата периода
const int BEGDATE = 6;
// конечная дата периода
const int ENDDATE = 7;
// путь к основному приложению
const int PATHAPP = 8;
// длина массива параметров
const int LENGTH_PAR = 9;
public static DescrServ DS;
int IndexHost = -1;
string Logfile = "";
string PathApp = "";
// объект интерпретатора Alfa
AlfaRun Alfa;
public MainForm () {
InitializeComponent();
DS = new DescrServ();
DS.NameApp = "VLF v1.2 UAF";
// установить время периода
dtpBegDate.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month,
DateTime.Now.Day, 0, 0, 0);
dtpEndDate.Value = DateTime.Now;
// деактивировать элементы основной формы
lbLogfile.Enabled = false;
cbLogfile.Enabled = false;
lbTypeEvent.Enabled = false;
clbTypeEvent.Enabled = false;
lbBegPeriod.Enabled = false;
dtpBegDate.Enabled = false;
lbEndPeriod.Enabled = false;
dtpEndDate.Enabled = false;
btRun.Enabled = false;
}
// обработчик отображения формы
private void MainForm_Shown (object sender, EventArgs e) {
try {
#if DEBUG
PathApp = @"d:\User\C#\VLF\VLF";
#else
PathApp = App.GetPath("VLF");
#endif
}
catch (Exception Err) {
MessageBox.Show("Приложение VLF: " + Err.Message,
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
DS.ReadFile(PathApp + @"\computer.txt");
for (int i = 0; i < DS.Count; i++) {
cbHost.Items.Add(DS.GetName(i));
}
if (DS.Count > 0) {
cbHost.Text = DS.GetName(0);
cbHost.SelectedIndex = 0;
}
}
// обработчик выбора поля Host в основной форме
private void cbLogfile_SelectionChangeCommitted (object sender, EventArgs e) {
Logfile = (string)cbLogfile.SelectedItem;
clbTypeEvent.Items.Clear();
if (Logfile == "Security") {
clbTypeEvent.Items.AddRange(
new Object[] {
"Аудит - успех",
"Аудит - отказ"
}
);
}
else {
clbTypeEvent.Items.AddRange(
new Object[] {
"Ошибка",
"Предупреждение",
"Уведомление"
}
);
}
lbTypeEvent.Enabled = true;
clbTypeEvent.Enabled = true;
lbBegPeriod.Enabled = false;
dtpBegDate.Enabled = false;
lbEndPeriod.Enabled = false;
dtpEndDate.Enabled = false;
btRun.Enabled = false;
}
private void clbTypeEvent_SelectedIndexChanged (object sender, EventArgs e) {
if (clbTypeEvent.CheckedIndices.Count > 0) {
lbBegPeriod.Enabled = true;
dtpBegDate.Enabled = true;
lbEndPeriod.Enabled = true;
dtpEndDate.Enabled = true;
btRun.Enabled = true;
}
else {
lbBegPeriod.Enabled = false;
dtpBegDate.Enabled = false;
lbEndPeriod.Enabled = false;
dtpEndDate.Enabled = false;
btRun.Enabled = false;
}
}
private void dtpBegDate_ValueChanged (object sender, EventArgs e) {
if (dtpBegDate.Value.ToString("yyyy.MM.dd") == DateTime.Now.ToString("yyyy.MM.dd"))
dtpEndDate.Value = DateTime.Now;
else
dtpEndDate.Value = dtpBegDate.Value.AddDays(1);
}
private void btRun_Click (object sender, EventArgs e) {
// массив параметров
string[] Param;
if (cbHost.SelectedIndex == -1) {
MessageBox.Show("Незаполнено поле: Сервер!",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
if (cbLogfile.SelectedIndex == -1) {
MessageBox.Show("Незаполнено поле: Журнал!",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
if (clbTypeEvent.CheckedIndices.Count == 0) {
MessageBox.Show("Невыбран элемент: Тип события!",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
if (dtpEndDate.Value.CompareTo(dtpBegDate.Value) < 0) {
MessageBox.Show("Конечное значение периода меньше начального значения!",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
if (dtpEndDate.Value.Subtract(dtpBegDate.Value).Days > 1) {
MessageBox.Show("Значение периода больше 24 часов!",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
IndexHost = cbHost.SelectedIndex;
// установить передаваемые параметры
// получить параметры сервера (длина массива Param равна 4)
Param = DS.GetArrParam(IndexHost);
// изменить количество элементов в массиве параметров
Array.Resize(ref Param, LENGTH_PAR);
Param[LOGFILE] = (string)cbLogfile.SelectedItem;
int I = 0;
string EventType = "";
if ((string)cbLogfile.SelectedItem == "Security") {
foreach (int Index in clbTypeEvent.CheckedIndices) {
if (I == 0)
EventType = (Index + 4).ToString();
else
EventType += "," + (Index + 4).ToString();
I++;
}
}
else {
foreach (int Index in clbTypeEvent.CheckedIndices) {
if (I == 0)
EventType = (Index + 1).ToString();
else
EventType += "," + (Index + 1).ToString();
I++;
}
}
Param[EVENTTYPE] = EventType;
Param[BEGDATE] = dtpBegDate.Value.ToString("yyyy.MM.dd HH:mm:ss");
Param[ENDDATE] = dtpEndDate.Value.ToString("yyyy.MM.dd HH:mm:ss");
Param[PATHAPP] = PathApp;
Application.DoEvents();
Cursor = Cursors.WaitCursor;
try {
// создать объект для выполнения программы CreateEventLog.alfc
#if DEBUG
Alfa = new AlfaRun(PathApp + @"\scripts\createeventlog.alf", true);
#else
Alfa = new AlfaRun(PathApp + @"\scripts\createeventlog.alfc", true);
#endif
// выполнить программу
int Result = (int)Alfa.Run(Param);
if (Result > 0) {
MessageBox.Show("Приложение CreateEventLog.\n" + "Ошибка!\n" +
"Смотри createeventlog.log",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
}
finally {
// освободить занятые ресурсы
Alfa.Close();
Cursor = Cursors.Arrow;
}
}
private void btExit_Click (object sender, EventArgs e) {
this.Close();
Application.Exit();
}
private void btServ_Click (object sender, EventArgs e) {
// DS.ReadFile(PathApp + @"\computer.txt");
ServForm Dialog = new ServForm();
if (Dialog.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) {
cbHost.Items.Clear();
for (int i = 0; i < DS.Count; i++) {
cbHost.Items.Add(DS.GetName(i));
}
if (DS.Count > 0)
cbHost.Text = DS.GetName(0);
// cbHost.SelectedIndex = -1;
cbLogfile.Items.Clear();
cbLogfile.Text = "";
cbLogfile.SelectedIndex = -1;
clbTypeEvent.Text = "";
clbTypeEvent.Items.Clear();
lbTypeEvent.Enabled = false;
clbTypeEvent.Enabled = false;
lbBegPeriod.Enabled = false;
dtpBegDate.Enabled = false;
lbEndPeriod.Enabled = false;
dtpEndDate.Enabled = false;
btRun.Enabled = false;
Dialog.Close();
if (DS.Status == DescrServ.DataStatus.OK) {
cbHost_SelectedIndexChanged(null, null);
}
}
else {
Dialog.Close();
}
}
private void cbHost_SelectedIndexChanged (object sender, EventArgs e) {
string[] Param;
cbLogfile.Items.Clear();
cbLogfile.Text = "";
cbLogfile.SelectedIndex = -1;
clbTypeEvent.Items.Clear();
clbTypeEvent.Text = "";
lbTypeEvent.Enabled = false;
clbTypeEvent.Enabled = false;
lbBegPeriod.Enabled = false;
dtpBegDate.Enabled = false;
lbEndPeriod.Enabled = false;
dtpEndDate.Enabled = false;
btRun.Enabled = false;
IndexHost = cbHost.SelectedIndex;
Param = DS.GetArrParam(IndexHost);
Cursor = Cursors.WaitCursor;
try {
// создание объекта для выполнения программы getlistlogfile.alfc
#if DEBUG
Alfa = new AlfaRun(PathApp + @"\scripts\getlistlogfile.alf", true);
#else
Alfa = new AlfaRun(PathApp + @"\scripts\getlistlogfile.alfc", true);
#endif
// выполнение программы и получение кода завершения
Object Result = Alfa.Run(Param);
// загружаем значения в cbLogfile
string[] Arr = (string[])Result;
if (Arr == null || Arr.Length == 0) {
MessageBox.Show("Приложение GetListLogfile.\n" +
"Невозможно получить список журналов событий!\n" +
"Смотри gelistlogfile.log",
"Ошибка",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
for (int i = 0; i < Arr.Length; i++)
cbLogfile.Items.Add(Arr[i]);
cbLogfile.Text = Arr[0];
lbLogfile.Enabled = true;
cbLogfile.Enabled = true;
}
finally {
// освобождение занятых ресурсов
Alfa.Close();
Cursor = Cursors.Arrow;
}
}
// вывод подсказки с установленным фоном и цветом
private void ttHelp_Draw (object sender, DrawToolTipEventArgs e) {
e.DrawBackground();
e.DrawBorder();
e.DrawText();
}
}
}
Это отличие свёрнуто
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать