vbscript – CreateObject(“WScript.Shell”).Run Path with spaces can not find file – Stack Overflow

Переменные окружения windows – теоретические основы

Переменные среды – Это по своей природе простые текстовые строки, которые позволяют хранить системную или пользовательскую информацию. Оны нужны, что бы быстро получить доступ к нужному ресурсу в операционной системе windows или системному значению. Все среды разделяют на два типа:

  • Системные – Данный тип создается автоматически операционной системой, они доступны для всех пользователей. Информация хранится в реестре, в большинстве случаев, что бы изменения вступили в силу, нужно произвести перезапуск операционной системы.
  • Пользовательские – Данный тип создается конкретным пользователей, поэтому информация доступна в большинстве случаев только для того пользователя, которые ее записал. В отличии от системных сред, пользовательские переменные окружения ОС Windows вступают сразу в силу, однако, нужно перезапустить те приложения, которые будут их использовать.

Доступ к средам в Windows XP осуществляется через значок “мой компьютер”: нажимаем правой кнопкой мыши по значку и из контекстного меню выбираем пункт “Свойства”, далее переходим на вкладку “Дополнительно” и там нажимаем на кнопку “переменные_среды”.

Vbscript: using wscript.shell to execute a command line program that accesses active directory

This is not a reply (I cant post comments), just few random ideas might be helpful. Unfortunately I’ve never dealt with citrix, only with regular windows servers.

_0. Ensure you’re not a victim of Windows Firewall, or any other personal firewall that selectively blocks processes.

Add 10 minutes Sleep() to the first line of your .NET app, then run both VBScript file and your stand-alone application, run sysinternals process explorer, and compare 2 processes.

_1. Same tab, “command line” and “current directory”. Make sure they are the same.

_2. “Environment” tab. Make sure they are the same. Normally child processes inherit the environment, but this behaviour can be easily altered.

:/>  [Win] How to Install ADB Command in CMD (Ready to Use) : 6 Steps - Instructables

The following check is required if by “run my script” you mean anything else then double-clicking the .VBS file:

_3. Image tab, “User”. If they differ – it may mean user has no access to the network (like localsystem), or user token restricted to delegation and thus can only access local resources (like in the case of IIS NTLM auth), or user has no access to some local files it wants.

Объект wscript.shell метод exec – запуск приложения |

Всем привет, с вами автор блога msconfig.ru. В этой статье мы продолжим изучать объектную модель Windows Script Host, мы изучим метод Exec класса Wscript_Shell, который отвечает за запуск приложения или скрипта.

метод Exec WScript Shell класса

Как я уже сказал, метод Exec WScript.Shell объекта, позволяет запускать программным путем другие приложения или сценарии, причем, они будут работать как дочерний процесс, то есть, им будут присущие те же переменные среды Windows, что и у процесса родителя. Вообще, использование метода Exec класса WScript Shell больше подходит для консольных приложений, которые выполняются в консольном окне. Мы уже рассматривали метод Run, который тоже управляет запуском приложения из сценария, но, они не будут дочерними, и поэтому, контролировать их нельзя.

Сам метод Exec содержит в себе объект, с помощью которого и можно обрабатывать запущенный процесс. Нам на данный момент интересны два его свойства – Status и ProcessID и метод Terminate()

ProcessID – Данное свойство хранит в себе идентификатор процесса, который был запущен с помощью метода Exec. Свойство полезно использовать вместе с функцией AppActivate, которая позволяет активировать приложение по имени или идентификатору.

Status – Содержит информацию о ходе выполнения запущенной задачи. Если задача еще выполняется – свойство вернет 0, если задача прекратила свою работу – свойство вернет значение 1.

:/>  Как получить права администратора в Windows 10 | Как стать администратором учетной записи

Terminate() – Данный метод позволяет завершить дочерний процесс, созданный с помощью функции Exec. Фактически, процессу будет послана команда WM_CLOSE, если это не сработает, то процесс будет завершен принудительно.

Хорошо, что бы вам все это стало немного понятней, приступим к практической стороне вопроса, а именно, к программированию.

Для начала напишем такой программный код на языке vbscript:

Возможно, сценарий вам покажется запутанным, но не волнуйтесь, сейчас я все поясняю. Условно, он разбит на три части:

Метод Exec для запуска приложения

Часть 1 – С помощью метода Exec объекта WScript Shell мы запускаем на выполнение “xcopy /?“, тем самым мы неявным образом получаем доступ к классу, ссылка на который хранится в переменной WshExec_1, о том, что это класс в языке vbscript нам говорит ключевое слово set. Аналогично, переменная WshExec_2 позволит обрабатывать и следить за “ipconfig /?“. Я говорю команда, хотя это условность, так как мы фактически делаем запуск “xcopy.exe” приложения и “ipconfig.exe“. Далее идет использование цикла do loop, он позволяет нам проследить статут выполняемых утилит с помощью Status и вывести их идентификаторы процессов с помощью ProcessID.

Часть 2 – тут мы запускаем приложение калькулятор, и также, следим за статусом его работы, как только мы закроем калькулятор, появится сообщение – “Программа калькулятор завершила работу” и выведется идентификатор его процесса.

Часть 3 – тут мы запускаем Блокнот приложение и далее завершаем его работу с помощью метода Terminate.

Хотя данный сценарий может работать и в оконном режиме, но лучше, выполнить его из командной строки с помощью cscript.exe, просто после cscript.exe прописываем в кавычках путь к сценарию.

:/>  Как удалить виртуальный диск: методы на все случаи

Ну и напоследок, аналогичный пример использования Exec метода объекта WScript Shell, но уже на языке jscript:

запускаем приложение windows программно

Скачать архив с примерами

В данном программном коде общая логика работы скрипта не изменилась, я только изменил имена переменных и все, также обратите внимание, что в обоих примерах я использовал оператор with, который позволяет сократить программный код, чтобы не писать лишний раз имя класса.

Спасибо за внимание. Автор блога

Переменные среды windows – практическая часть

Хорошо, теперь давайте перейдем непосредственно к основной части статьи. Мы рассмотрим объект WScript.Shell, его свойство Environment позволяет работать с переменными окружения Windows:

Environment([strType]) – По умолчанию, данное свойство предоставляет доступ ко всем переменным окружения Windows типа System, но можно задать и другой тип, их всего четыре:

И так, переменная среда Windows, это переменная, которая хранится в самой системе, она может быть временной, системной или, может быть создана пользователем. Так, благодаря переменным окружения Windows мы можем через меню Пуск/Выполнить запускать командную строку или калькулятор (все то, что лежит в системных каталогах) не вводя полного пути. Также, Windows переменные окружения хранят информацию о процессоре, профиле пользователя и многое другое.

Давайте напишем простой сценарий на языке vbscript для лучшего понимания ситуации:

Оставьте комментарий

Adblock
detector