1

Тема: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Пример из справки, не работает, ни в VBScript ни в JScript:

Set objShellApp = CreateObject("Shell.Application")
WinCol = objShellApp.Windows().Count
MsgBox "В настоящий момент открыто окон Проводника - " & WinCol, vbInformation

В ответ получаю:

[b]Сервер сценариев Windows[/b]
Строка: 2
Символ: 1
Ошибка: Невозможно создание объекта контейнером ActiveX
Код: 800A01AD
Источник: Ошибка выполнение Microsoft VBScript

Windows XP SP3
WSH v5.7

Нас невозможно сбить с пути, нам пофигу куда идти.

2

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

На всякий случай, попробуйте перерегистрировать библиотеку:

regsvr32.exe C:\WINDOWS\system32\SHELL32.dll

3

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Не помогает, причем уже на 2 компьютерах проверил.

Нас невозможно сбить с пути, нам пофигу куда идти.

4

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

У Вас такое даже не на одном?!

Какая версия IE?

5

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

На одном компьютере
Windows XP SP3
WSH v5.7
IE 8

На домашнем
Windows XP SP2
WSH v5.6
IE 7

Нас невозможно сбить с пути, нам пофигу куда идти.

6 (изменено: DnsIs, 2010-11-12 19:49:25)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Причем выяснил, что shell32.dll ни при чем. Я отменил регистрацию shell32.dll (regsvr32.exe shell32.dll /u)
И ошибка такая  же и осталась, а если бы была зависимость, то было бы что то вроде:
"Не удается найти класс программируемых объектов с именем "Shell.Application"

Так что де то в другом месте проблема. Я предполагаю, что может быть какая-нибудь из моих программ, которая установлена и на работе и дома, может быть причиной. Но вот какая?

Нас невозможно сбить с пути, нам пофигу куда идти.

7

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

DnsIs пишет:

И ошибка такая  же и осталась, а если бы была зависимость, то было бы что то вроде:
"Не удается найти класс программируемых объектов с именем "Shell.Application"

Да ну :

Set objShellApp = CreateObject("qww.qww")

Ошибка выполнения Microsoft VBScript: Невозможно создание объекта контейнером ActiveX: 'qww.qww'

Вы путаете с «WScript.CreateObject()»:

Set objShellApp = WScript.CreateObject("qww.qww")

WScript.CreateObject: Не удается найти класс программируемых объектов с именем "qww.qww".

8 (изменено: jite, 2010-11-14 03:48:59)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Логично, alexii.
Странно, но у меня приведенный пример и без "WScript." работает. (XP SP2)

9

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

jite, так и у меня работает. А у коллеги DnsIs — нет.

10

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Ну не работает и не работает. Мне оно и не нужно (по крайней мере пока) Просто скрипт скачал один с форума, стал запускать, а он не хочет пахать. Я в нем поковырялся и нашел где именно грабли.
Просто возмущен, почему всех фурычит, а у мне я не хочет. Чтож, да будет так.

Нас невозможно сбить с пути, нам пофигу куда идти.

11 (изменено: jite, 2010-11-14 21:13:32)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Это точно не работает на локальном компе под WSH?
А то может на ISS (ASP)? Или попытка запуска CreateObject() на другом компе?

Если точно локально, под WSH, то:
1) Идем в свойства обозревателя IE и во вкладке безопасность проверяем, не слишком ли высок ее уровень... э-э для локального компа уровня нет (вообще-то это ветка HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0), но может поможет сброс движков доверенных и интранета в "Средний"? После перегрузиться для гарантии.
2) Или создаем нового пользователя, даем для гарантии ему права локального админа, смотрим, как под ним? Если под новым все ОК, то под "нерабочим" профилем есть проблема в упомянутой ветке реестра.

12

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Казалось бы, причем здесь IE...
Но оно таки есть. Встречал последствия действий одного зловреда как раз в части настроек безопасности IE: была оставлена одна зона и в ней все заблокировано. При этом пользователь не мог вообще ничего запустить. Решалось пересозданием профиля.

13 (изменено: DnsIs, 2010-11-15 11:56:00)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

jite, настройки IE у меня по-умолчанию.
Но обнаружил вот что:
Оказывается, что скрипт, прекрасно пашет если его запустить из проводника windows (0)
НО! Если из Total Commander (1), Notepadd++ (2) или из консоли (3), то не хочет запускаться ни в какую.
Проверил строки запуска скрипта, но во всех случаях они оказались идентичными, символ в символ.

Тогда я проверил от имени какого пользователя запускаются процессы, оказалось что
(1), (2), (3), запускают WScript.exe от имени SYSTEM,
А (0) от имени локального пользователя.
О как!

Нас невозможно сбить с пути, нам пофигу куда идти.

14 (изменено: DnsIs, 2010-11-15 14:15:22)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

В ходе "расследования" вот что нарыл еще.
Я всегда, когда сажусь за комп, запускаю Тотал Коммандер, мне с ним удобней.
Запускал я его всегда из проводника Windows, но в один прекрасный день я установил nnCron и сделал на основные программы горячие клавиши.
И теперь выглядит все вот как:
При загрузке компа грузиться nnCron от имени SYSTEM, и далее по цепочке, Тотал от имени SYSTEM, Notepad++ от имени SYSTEM, скрипты от имени SYSTEM, ВСЕ от SYSTEM!

Понять еще не мог, почему у меня вордовские и экселевские документы при запуске из Тотала пишут: "Файл не найден", хотя все работало ранее нормально, и где случился переломный момент, что так произошло.
Теперь понял. Оказывается корень всех проблем в том, что nnCron Работает от SYSTEM.

Вот в этой области моих знаний не хватает. Скажите, гуру, Почему SYSTEM такой злобный?
Где ковырнуть винду, что бы подружить SYSTEM и пользовательский аккаунт?

Нас невозможно сбить с пути, нам пофигу куда идти.

15

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Я думаю, проще будет сделать загрузку TC и прочего из обычного пользовательского раздела «HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run». Горячие клавиши и прочее удобно организовывать в «True Launch Bar».

16

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Проблему решил, выставив в nnCron опцию "Запускать программы от имени пользователя".
И погуглив нашел ответ: SYSTEM  - это встроенный пользовательский аккаунт, с ограниченными правами.
Вот и вся проблема.

Всем спасибо.

Нас невозможно сбить с пути, нам пофигу куда идти.

17 (изменено: jite, 2010-11-15 22:53:59)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

DnsIs пишет:

Проблему решил, выставив в nnCron опцию "Запускать программы от имени пользователя".

Это лучшее решение.

DnsIs пишет:

SYSTEM  - это встроенный пользовательский аккаунт, с ограниченными правами.

Ну если точней, то это аккаунт (SYSTEM он же NT AUTHORITY\SYSTEM), под которым собственно операционка "логинится" и действует. Уровень полномочий SYSTEM примерно такой же, как и у встроенного админа. Именно для него во вкладке безопасность предусмотрены права доступа SYSTEM.
Однако под SYSTEM лучше не сидеть лично и повседневно - не предназначен он для этого. Наверняка найдутся какие-нибудь специфические грабли, для обхода которых придется менять настройки ОС по ум. с риском чего-нибудь непоправимо сломать. Оно нам надо?
Из полезного же можно зайти под ним не переопределяя прав на папки:
- в "System volume information" - актуально при лечении небольших сбоев привязки к жесткому, как правило, требуется в XP после клонирования диска,
- в кэш автономных файлов C:\Windows\CSC - актуально для Win7, папка известна тем, что со временем в ней накапливается много мусора, который просто так не удалить.
Словом специфические операции.

18

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Помню как то читал статью о паролях windows. Выдержка:

Информация об учетных записях пользователей хранится в ветке "HKEY_LOCAL_MACHINE\SAM" (SAM - Security Account Manager) реестра ... бла-бла-бла ... по умолчанию недоступен для чтения никому, даже Администратору

А я все гадал, почему я запуская реестр, спокойно читаю этот раздел, а оказывается вон оно как все запутанно.

Нас невозможно сбить с пути, нам пофигу куда идти.

19

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Еще одно специфическое применение аккаунта. Кто бы мог подумать, куда может завести обсуждение неработающей функции...

Возвращаясь к теме. Все-таки интересно, почему же SYSTEM не имеет права получать Shell.Application? А если я вдруг задумаю под этим акком какой-нибудь скрипт выполнить? Что, разве не должен выполниться? Странно.

20

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

DnsIs, для того, чтобы объект «Shell.Application» мог быть создан, должен существовать экземпляр Проводника, и, поскольку он существует в контексте текущего пользователя, а скрипт Вы пытаетесь запустить от имени «NT AUTHORITY\SYSTEM», то, соответственно, получаете закономерный отлуп. Запустите файловый менеджер от имени «NT AUTHORITY\SYSTEM», закройте Проводник описанным способом: OFF: Завершение работы Проводника без снятия процесса «explorer.exe», запустите из-под файлового менеджера Проводник. Запускайте скрипт.

P.S. Данное поведение зависит от свойств конкретного объекта, как и чем он реализуется.

21

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

off (bytheway system_purpose)

DnsIs пишет:

Помню как то читал статью о паролях windows. Выдержка:

Информация об учетных записях пользователей хранится в ветке "HKEY_LOCAL_MACHINE\SAM" (SAM - Security Account Manager) реестра ... бла-бла-бла ... по умолчанию недоступен для чтения никому, даже Администратору

А я все гадал, почему я запуская реестр, спокойно читаю этот раздел, а оказывается вон оно как все запутанно.

Вообще-то упомянутая ветка доступна для чтения всем... если я случайно не сбросил разрешения.
В статье же говорится про %SystemRoot%\system32\config\SAM, а его при активной ОС прочесть не удастся и под SYSTEM. Впрочем он читается другими способами. Даже при активной ОС.

end off

22

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

jite пишет:

Вообще-то упомянутая ветка доступна для чтения всем... если я случайно не сбросил разрешения.

Возможно, имелось в виду «HKEY_LOCAL_MACHINE\SAM\SAM».

23

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

jite, да да, как правильно поправил alexii, я имел ввиду ветку «HKEY_LOCAL_MACHINE\SAM\SAM».
А вы уверены что читается? Вы открываете ее, а там пусто или нет? Если пусто то вы просто ничего не видите. Попробуйте так:

at 0:43 reg export HKEY_LOCAL_MACHINE\SAM\SAM c:\reg.reg

Вместо 0:43 подставьте свое время

и потом загляните в полученный файл.

Ну а про %SystemRoot%\system32\config\SAM в манах написано:

"HKEY_LOCAL_MACHINE\SAM" (SAM - Security Account Manager) реестра. А так как в Windows XP все ветки реестра "физически" расположены на диске в каталоге %SystemRoot%\System32\Config в нескольких файлах, то и эта ветка - не исключение.

Так что фактически одно и тоже.

jite пишет:

а его при активной ОС прочесть не удастся и под SYSTEM. Впрочем он читается другими способами. Даже при активной ОС.

Не подскажите как?

Нас невозможно сбить с пути, нам пофигу куда идти.

24 (изменено: jite, 2010-11-17 01:57:27)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Да, действительно по умолчанию sam\sam не должен быть виден.

Не подскажите как?

Вирус заблокировал вам доступ к Google?!
Что-то подсказывает мне, что мы слишком отклонились от темы.

25

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

2jite: коллега, при ссылке на Google (хоть этого и нет в Правилах ) желательно (и, думаю, достаточно) давать уже сформулированный запрос, например так, или так, иначе это не может считаться ответом на вопрос.

26 (изменено: jite, 2010-11-17 03:01:15)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Да, но тогда не являются ли взаимоисключающими такая ссылка и п. 2.9?

27

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

В какой его части?

А, Вы для данного конкретного случая… Понятно. Пост уже не стану удалять, дабы не терялась нить рассуждений, почему в данном случае нельзя. Спасибо, ясно.

28

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Уважаемый, jite, надеюсь вы не подумали что я горе-вирусописатель? Если так, то могу вас уверить, что это не так. Пример про SAM файл и реестр возник спонтанно. Не могу отрицать что лет 10 назад интересовали вирусные технологии, в студенчестве, да и то, никогда в голову не пришло бы писать вирусы с использование скриптовых языков, которыми я увлекся относительно недавно, около года назад.

Есть документированные способы доступа к заблокированным файлам и уверяю вас, я знаю как. В сети есть отличная статья на эту тему, и если вспомнить студенческие годы и ASM, то думаю что смогу написать крошечную программку которая бы это реализовывала.

А с просил я только из чистого любопытства, так как знать все на свете нельзя и возможно вы подсказали бы способ мне не знакомый.

2alexii, пора закрывать тему наглухо, можно даже с удалением не относящихся к теме постов.

Нас невозможно сбить с пути, нам пофигу куда идти.

29 (изменено: jite, 2010-11-18 22:49:42)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Уважаемый DnsIs, я тоже не отношусь к деструктивной категории разработчиков. И в отличие от вас даже не практиковал ассемблер. Вирусными технологиями интересуюсь и сейчас - с точки зрения защиты,- как и любой другой, связанный с системным администрированием.
Вполне готов поделиться сведениями на эту тему, просто здесь это не рекомендовано...

------------------ >8 Линия отреза 8< ------------------

this.topic_title.new("ЛС как альтернативный способ обсуждения нерекомендованного к обсуждению. Вопросы, тестирование")

30

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

jite пишет:

А давайте так, раз уж есть интерес, и кто-то из модераторов даст добро, я прямо в этом посте опишу известные мне методики чтения файлов папки system32\sam. А после того, как пост повисит денька 2-3, я это все вытру. Идет, alexii? smile

Я бы предпочёл, что б такие вещи шли в личку. Впрочем, подождём, что скажет администрация.

31

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Плюнте в меня если я не прав, но я считаю, что тема прямым образом не относиться в вирусописательству. Раз уж так, то давайте запретим писать на форумах "format c:", "del c:\windows\*.*" и пр...
Необязательно писать о фале SAM. Тем более в интернете полно статей на эту тему.
Неужели ни у кого не возникает необходимости копировать залоченные файлы. А SAM ведь, как я понимаю не исключение.

У меня на работе каждый день бэкапится база 1с "на живую".
Самый очевидный из способов, это использование программ задействующих, вполне легальное и документированное Теневое копирование. Наверняка все админы про него знают.

Нас невозможно сбить с пути, нам пофигу куда идти.

32

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

jite пишет:

...чтоб такие вещи шли в личку

А она кстати работает? Я как-то "Послать e-mail" (ссылка в профиле любого пользователя) одному участнику. Реакции не дождался. Видимо не дошло.
А пункта ЛС у меня нет.

Работает. Просто не все отвечают, я сам с этим сталкивался.

Под «ЛС» я, собственно, «Послать e-mail» и имел в виду.

33

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

alexii пишет:

Работает. Просто не все отвечают, я сам с этим сталкивался.

Под «ЛС» я, собственно, «Послать e-mail» и имел в виду.

Нужно учитывать и тот факт, что у большинства (по крайней мере из моих личных наблюдений) е-почта является всего лишь обязательной принадлежностью каждого для зарегистрирования аккаунтов, учитывая то обстоятельство, что существуют гораздо удобнее средства общения (аськи-ирки, контакты-одноклассники..) и обмена информации (файлообменники, виртуальные флешки и т.д. и т.п.) чем е-почта.

Стремление - залог успеха

34

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

И это тоже. Немалое число регистрируется, пользуя Mailinator.com и тому подобное. Впрочем, как говорится, тут уж никто не виноват — сам себе злобный Буратино. Кто хотел получать письма — менял потом адрес на нормальный.

35 (изменено: DnsIs, 2010-11-18 19:08:16)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Мне кажется нужно временные ящики (Mailinator.com и пр.) фильтровать, нафик такие пользователи нужны.

Нас невозможно сбить с пути, нам пофигу куда идти.

36

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Да ну . И как Вы планируете определять, какой почтовый адрес относится ко «временным ящикам»?

37

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

DnsIs пишет:

Мне кажется нужно временные ящики (Mailinator.com и пр.) фильтровать, нафик такие пользователи нужны.

Ну и как, получили письмо?

38

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Нет, не получил. А Вы?

Hello World!

39

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

OFF: Тьфу ты! Письмо-то не мне было отправлено. Недоглядел .

40 (изменено: jite, 2010-11-18 22:31:58)

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Участник alexii форума Серый форум послал Вам сообщение. Вы можете ответить alexii путём ответа на это письмо.

Содержание сообщения:
-----------------------------------------------------------------------

Hello World!

-----------------------------------------------------------------------

В свою очередь направлю письмо вам, alexii. А то вдруг, не доходят...

41

Re: VBS, JS: Проблемы с CreateObject("Shell.Application").Windows().Count

Доходят:

Участник jite форума Серый форум послал Вам сообщение. Вы можете ответить jite путём ответа на это письмо.

Содержание сообщения:
-----------------------------------------------------------------------

Тестовое сообщение.

-----------------------------------------------------------------------

--
Серый форум Почтовый робот