blob: 39f991c12141831a2065eba8d6c200765092b49c [file] [log] [blame] [raw]
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Reflection;
using System.Security.Principal;
using System.Threading;
using System.Windows.Forms;
namespace RemoteView
{
class Program
{
static void Main(string[] args)
{
bool banner = true, help = false, error = false;
int port = 6060;
// make sure only one instance is online
Process[] RunningProcesses = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Application.ExecutablePath));
if (RunningProcesses.Length != 1)
{
return;
}
// get admin level
if (!IsRunningAsAdministrator())
{
ProcessStartInfo processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);
processInfo.UseShellExecute = true;
processInfo.Verb = "runas";
processInfo.Arguments = String.Join(" ", args);
try
{
Process.Start(processInfo);
}
catch (Exception)
{
Console.WriteLine("Needs administrator rights.");
}
return;
}
// check if http listener is supported
if (!HttpListener.IsSupported)
{
Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
return;
}
// parse command line params
foreach (string arg in args)
{
if (arg.Equals("-b"))
{
banner = false;
}
else if (arg.Equals("-h"))
{
help = true;
}
else if (arg.StartsWith("-p"))
{
int n;
if (int.TryParse(arg.Substring(2), out n))
{
port = n;
}
else
{
error = true;
}
}
else
{
error = true;
}
}
if (banner)
{
showBanner();
}
if (help)
{
showHelpMessage();
return;
}
if (error)
{
Console.WriteLine("Error in Parameter.");
return;
}
// run server
Server server = new Server();
new Thread(() =>
{
server.start(port);
}).Start();
// works!
Thread.Sleep(2000);
if (!server.isRunning())
{
Console.WriteLine("Could not start server... Exiting.");
return;
}
Console.WriteLine("Server running press [c] to stop");
while (server.isRunning() && Console.ReadKey(true).Key != ConsoleKey.C) ;
server.stop();
}
private static void showBanner()
{
Console.WriteLine(Application.ProductName + " - Desktop sharing server" + Environment.NewLine);
}
private static void showHelpMessage()
{
Console.WriteLine("Usage:");
Console.WriteLine("RemoteView [-pN] [-b] [-h]");
Console.WriteLine("\t-p :\tListen on port N;");
Console.WriteLine("\t-b :\tDon't show banner message;");
Console.WriteLine("\t-h :\tThis screen;");
// Console.WriteLine("\t-i :\tInstall as Windows service");
// Console.WriteLine("\t-u :\tUninstall as Windows service");
}
private static bool IsRunningAsAdministrator()
{
return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
}
}
}