Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск VBScript из С#

9.0K
01 марта 2007 года
Shit_Happenes
58 / / 05.10.2006
Никто не знает, как запустить готовый vbscript(start.vbs)
из С# проги, а потом наладить с ним обратную связь?

Там есть специальный класс для запуска скриптов,
вот только я не могу его найти.
273
01 марта 2007 года
3A3-968M
1.2K / / 22.12.2005
Цитата: Shit_Happenes

Там есть специальный класс для запуска скриптов


Там, это где??
А вообще это очень просто:

Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]public [/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]class [/COLOR][/SIZE][SIZE=2][COLOR=#008080]ScriptHost[/COLOR][/SIZE][SIZE=2] : [/SIZE][SIZE=2][COLOR=#008080]MarshalByRefObject[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#008080]IDisposable[/COLOR][/SIZE][/FONT]
[SIZE=2][FONT=Courier New]{[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]readonly[/COLOR][/SIZE][SIZE=2][COLOR=#008080]Process[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Host;[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] ScriptHost()[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Process[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.StartInfo.FileName = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#800000]"cscript.exe"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.StartInfo.RedirectStandardInput = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.StartInfo.RedirectStandardOutput = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.StartInfo.RedirectStandardError = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New];[/FONT][/SIZE]
 
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] ScriptFileName[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]   get[/COLOR][/SIZE][SIZE=2] { [/SIZE][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2] Host.StartInfo.Arguments.Replace([/SIZE][SIZE=2][COLOR=#800000]" /U"[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#800000]""[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]); }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]   set[/COLOR][/SIZE][SIZE=2] { Host.StartInfo.Arguments = [/SIZE][SIZE=2][COLOR=#008080]String[/COLOR][/SIZE][SIZE=2].Concat([/SIZE][SIZE=2][COLOR=#0000ff]value[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#800000]" /U"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]); }[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public[/COLOR][/SIZE][SIZE=2] System.IO.[/SIZE][SIZE=2][COLOR=#008080]StreamReader[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Output[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]   get[/COLOR][/SIZE][SIZE=2] { [/SIZE][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Host.StandardOutput; }[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public[/COLOR][/SIZE][SIZE=2] System.IO.[/SIZE][SIZE=2][COLOR=#008080]StreamWriter[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Input[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]   get[/COLOR][/SIZE][SIZE=2] { [/SIZE][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Host.StandardInput; }[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public[/COLOR][/SIZE][SIZE=2] System.IO.[/SIZE][SIZE=2][COLOR=#008080]StreamReader[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Error[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff]   get[/COLOR][/SIZE][SIZE=2] { [/SIZE][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Host.StandardError; }[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] BeginExecution()[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.Start();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] StopScript()[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.Kill();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] EndExecution()[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.WaitForExit();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[SIZE=2][COLOR=#0000ff][FONT=Courier New] #region[/FONT][/COLOR][/SIZE][SIZE=2][FONT=Courier New] IDisposable Members[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] public [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] Dispose()[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] {[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]   Host.Dispose();[/FONT][/SIZE]
[SIZE=2][FONT=Courier New] }[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#0000ff] #endregion[/COLOR][/SIZE][/FONT]
[FONT=Courier New][SIZE=2]}[/SIZE][/FONT]

Создаёшь экземпляр этго класса, указываешь в ScriptFileName путь к скрипту и запускаешь при помощи BeginExecution. При помощи Input и Output взаимодействуешь со скриптом.
9.0K
03 марта 2007 года
Shit_Happenes
58 / / 05.10.2006
Выкрутился, использовал WMI для запуска удалленого процесса.
До этого у меня это скрипт делал.

Теперь такой вопрос, как организовать взаимодействие двух зарегистрированных в WMI на разных машинах классов
для того, чтобы они файлы могли получать?
273
06 марта 2007 года
3A3-968M
1.2K / / 22.12.2005
Цитата: Shit_Happenes
Выкрутился, использовал WMI для запуска удалленого процесса.
До этого у меня это скрипт делал.


Не понял, чем тебе мой вариант не устроил.
И что значит файлы получать. Классы WMI не являются автономными объектами и представляют из себя пассивную сущность, как и COM-объекты. Создавать WMI/COM классы можно только во время выполнения. Если ты хочешь вложить в WMI-класс функионал по обмену файлами по сети, так пожалуйста. Создаёшь TCP-канал, назначаешь его на порт, регистрируешь канал и вперёд - пересылай по этому каналу чего хочешь.

9.0K
06 марта 2007 года
Shit_Happenes
58 / / 05.10.2006
Короче, у меня такая задача:
1. Переписать на удалённую машину файлы установки программы.
2. Запустить удалённо файл установки.

У меня есть только:
1. Имя удалённой машины.
2. Права админа на удалённой машине.
3. .NET Framework.
273
08 марта 2007 года
3A3-968M
1.2K / / 22.12.2005
Цитата: Shit_Happenes
Короче, у меня такая задача:
1. Переписать на удалённую машину файлы установки программы.
2. Запустить удалённо файл установки.

У меня есть только:
1. Имя удалённой машины.
2. Права админа на удалённой машине.
3. .NET Framework.


Копируешь файлы по сетевому пути в директорию \\Имя_компьютера\Директория, ты должен быть в той же рабочей группе, например так: [FONT=Courier New]System.IO.File.Copy(@"C:\Distrib\inst.exe", [/FONT][FONT=Courier New]\\Sales\temp\inst.exe[/FONT][FONT=Courier New])[/FONT]
Далее запускаешь процесс при помощи своего скрипта.
Коннект WMI к удалённой машине делаешь так:

 
Код:
[SIZE=2][COLOR=#008080][FONT=Courier New]ManagementScope[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2] remotePath = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]ManagementScope[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]@"\\192.168.0.1\root\comv2"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New]remotePath.Connect();[/FONT][/SIZE]
[FONT=Courier New][SIZE=2][COLOR=#008080]ManagementClass[/COLOR][/SIZE][SIZE=2] c = [/SIZE][SIZE=2][COLOR=#0000ff]new [/COLOR][/SIZE][SIZE=2][COLOR=#008080]ManagementClass[/COLOR][/SIZE][SIZE=2](remotePath, [/SIZE][SIZE=2][COLOR=#800000]"Win32_Service"[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#008080]ObjectGetOptions[/COLOR][/SIZE][SIZE=2]());[/SIZE][/FONT]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог