Смекни!
smekni.com

«Система удаленного администрирования» (стр. 3 из 3)

Одна из интересных возможностей программы - тонкая настройка серверной части. Если вы по каким-то причинам хотите скрыть наличие на удаленном компьютере программы-сервера, вы можете вызвать окно настроек программы, щелкнув по значку в области уведомлений, и ограничить права пользователя. Например, можно запретить закрытие программы и изменение ее настроек с сервера, а также скрыть значок в системном трее, чтобы у любопытных возникало меньше вопросов.

●RemotelyAnywhere - это не совсем обычная программа для администрирования. В отличие от других подобных утилит, она состоит только из одной части - сервера, а роль клиента выполняет браузер. Иными словами, устанавливать программу нужно только на том, компьютере, к которому нужно подключиться. Это очень удобно, если вы хотите проводить удаленное администрирование с компьютера, на котором не можете устанавливать никаких программ, например, если этот компьютер стоит в учебном заведении, в Интернет-кафе или на работе.

Для работы программа задействует специальный ActiveX-компонент браузера и использует собственный протокол обмена данными. Когда сервер установлен и запущен, к компьютеру можно получить доступ, введя в браузере адрес https://ваш_IP:2000 (если вы собираетесь работать с программой через Интернет) или https://имя_компьютера:2000 (если предполагается подключаться по локальной сети). После этого нужно указать имя пользователя и пароль, которые используются для входа в Windows на удаленном компьютере. Безопасность подключения обеспечивается NTLM-аутентификацией, защищенной 1024-битовым ключом.

После подключения в окне браузера будут выведены подробные сведения об удаленном ПК, в том числе, его конфигурация, степень заполненности жесткого диска, загруженность процессора, сетевая активность и т.д.

Пример кода

Снятие копии экрана

[DllImport("user32.dll")]

public extern static IntPtr GetDesktopWindow(); [System.Runtime.InteropServices.DllImport("user32.dll")]

public static extern IntPtr GetWindowDC(IntPtr hwnd);

[System.Runtime.InteropServices.DllImport("gdi32.dll")]

public static extern UInt64 BitBlt(IntPtr hDestDC, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, System.Int32 dwRop);

Image myImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

Graphics gr1 = Graphics.FromImage(myImage);

IntPtr dc1 = gr1.GetHdc();

IntPtr dc2 = GetWindowDC(GetDesktopWindow());

BitBlt(dc1, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc2, 0, 0, 13369376);

gr1.ReleaseHdc(dc1);

MemoryStream MS = new MemoryStream();

myImage.Save(MS, ImageFormat.Jpeg);

byte[] BytesPain = MS.GetBuffer();

mas = Convert.ToString(BytesPain.Length);

bw.Write(mas);

bw.Write(BytesPain);

Сериализация объектов

MasMet();

BinaryFormatter bFormat = new BinaryFormatter();

MemoryStream mStream = new MemoryStream();

bFormat.Serialize(mStream, SendMass);

byte[] biteSerialize = new byte[mStream.Length];

mStream.Position = 0;

mStream.Read(biteSerialize, 0,(int)mStream.Length);

string Dl = Convert.ToString(biteSerialize.Length);

((Info)MassList[a]).w.Write(Dl);

mStream.Close();

((Info)MassList[a]).w.Write(biteSerialize);

Десериализация объектов

arrList2 = (ArrayList)bFormat2.Deserialize(mStream2);