Альтернатива стандартной утилите 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; } } }