Создаем пустой консольный проект в C#.
Затем добавляем файл скрипта в ресурсы проэкта
В VS2010 это можно сделать через:
RMB на имени проекта->Properties->Resources->Add Resource->Add New Text File
Теперь можно получить содержимое скрипта, сохранить и запустить его.
Исходный код достаточно прост.
Чтобы получить содержимое скрипта, я использую:
Получить случайное, временное имя файла для сохранения скрипта:
Сохранение и запуск скрипта:
Чтобы запустить скрипт под другим пользователем, можно использовать следующий метод:
RunAs без ввода пароля
Аналогичным способом можно превратить любой скрипт (.vbs, .js, .ahk и т.д) в исполняемый .exe-файл.
Исходный код программы:
Затем добавляем файл скрипта в ресурсы проэкта
В VS2010 это можно сделать через:
RMB на имени проекта->Properties->Resources->Add Resource->Add New Text File
Теперь можно получить содержимое скрипта, сохранить и запустить его.
Исходный код достаточно прост.
Чтобы получить содержимое скрипта, я использую:
Properties.Resources.MyEmbeddedScriptгде MyMbeddedScript - имя ресурса со скриптом.
Получить случайное, временное имя файла для сохранения скрипта:
string scriptFileName = Path.GetTempFileName().Replace(".tmp",".vbs");Сохранение и запуск скрипта:
File.WriteAllText(scriptFileName, content); startedProcess = Process.Start(scriptFileName);
Чтобы запустить скрипт под другим пользователем, можно использовать следующий метод:
RunAs без ввода пароля
Аналогичным способом можно превратить любой скрипт (.vbs, .js, .ahk и т.д) в исполняемый .exe-файл.
Исходный код программы:
using System;
using System.Security;
using System.Diagnostics;
using System.IO;
namespace scriptEmbed
{
class Program
{
static int Main(string[] args)
{
return RunScript(Properties.Resources.MyEmbeddedScript);
}
static int RunScript(string content)
{
string scriptFileName = Path.GetTempFileName().Replace(".tmp",".vbs");
Process startedProcess;
try
{
File.WriteAllText(scriptFileName, content);
startedProcess = Process.Start(scriptFileName);
while (!startedProcess.HasExited) ;
File.Delete(scriptFileName);
return startedProcess.ExitCode;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return 1;
}
}
static string GetTempFolder()
{
return System.Environment.GetEnvironmentVariable("TEMP");
}
}
}
Комментариев нет:
Отправить комментарий