Альтернатива стандартной утилите RunAs с возможностью задать пароль в командной строке.
Программа делает то-же самое, что и стандартная runas.exe. Единственное отличие - возможность указать пароль напрямую, в командной строке.
Одним из возможных применений может быть выполнение пакетных заданий из под учетной записи администратора.
Синтаксис командной строки:
runasuser [-u пользователь] [-p пароль] [-d домен] someprogram.exe [параметры программы]
Ниже приведен полный исходный код:
Программа делает то-же самое, что и стандартная runas.exe. Единственное отличие - возможность указать пароль напрямую, в командной строке.
Одним из возможных применений может быть выполнение пакетных заданий из под учетной записи администратора.
Синтаксис командной строки:
runasuser [-u пользователь] [-p пароль] [-d домен] someprogram.exe [параметры программы]
Ниже приведен полный исходный код:
using System;
using System.Diagnostics;
using System.Security;
namespace RunAsUser
{
class Program
{
static int Main(string[] args)
{
string username = "", password = "", domain = "", apppath = "", arguments = "";
for( int i=0; i<args.Length; i++)
{
switch (args[i].ToLower())
{
case "-u":
username = args[++i];
break;
case "-p":
password = args[++i];
break;
case "-d":
domain = args[++i];
break;
default:
if (apppath == "")
apppath = args[i];
else
arguments += args[i] + (i<args.Length?" ":"");
break;
}
}
if (args.Length == 0 || apppath == "" )
{
Console.WriteLine("\nCommand line syntax:\nrunasuser [-u user] [-p password] [-d domain] someprogram.exe [params]\n");
return 1;
}
Console.WriteLine(arguments);
return RunAs(apppath, arguments, domain, username, password);
}
static int RunAs(string apppath, string arguments, string domain, string username, string password)
{
Process userProcess;
try
{
userProcess = Process.Start( apppath, arguments, username, GetSecure(password), domain);
while (!userProcess.HasExited) ;
return userProcess.ExitCode;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return -1;
}
static SecureString GetSecure(string str)
{
SecureString SecureStr = new SecureString();
foreach (char c in str)
{
SecureStr.AppendChar(c);
}
return SecureStr;
}
}
}