Запуск VBScript из С#
из С# проги, а потом наладить с ним обратную связь?
Там есть специальный класс для запуска скриптов,
вот только я не могу его найти.
Там есть специальный класс для запуска скриптов
Там, это где??
А вообще это очень просто:
[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 взаимодействуешь со скриптом.
До этого у меня это скрипт делал.
Теперь такой вопрос, как организовать взаимодействие двух зарегистрированных в WMI на разных машинах классов
для того, чтобы они файлы могли получать?
До этого у меня это скрипт делал.
Не понял, чем тебе мой вариант не устроил.
И что значит файлы получать. Классы WMI не являются автономными объектами и представляют из себя пассивную сущность, как и COM-объекты. Создавать WMI/COM классы можно только во время выполнения. Если ты хочешь вложить в WMI-класс функионал по обмену файлами по сети, так пожалуйста. Создаёшь TCP-канал, назначаешь его на порт, регистрируешь канал и вперёд - пересылай по этому каналу чего хочешь.
1. Переписать на удалённую машину файлы установки программы.
2. Запустить удалённо файл установки.
У меня есть только:
1. Имя удалённой машины.
2. Права админа на удалённой машине.
3. .NET Framework.
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][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]