1 (изменено: ypppu, 2016-08-03 14:40:38)

Тема: VBS: Создание папки в 64х разрядной системе

Здравствуйте уважаемые знатоки!
Задача такова: на ПК установлена система x64, на котором выполняется скрипт vbs (!!!c:\Windows\SysWOW64\wscript.exe в 32x разрядном режиме, ЭТО УСЛОВИЕ ОБЯЗАТЕЛЬНОЕ), одним из шагов скрипта создание папки в c:\Windows\System32\ .  Вроде все просто, вот примеры которые создают папки:


'-------- Варинт 1 ------------------
Dim SysFolder, NewFolder
SysFolder = "C:\Windows\System32\"
NewFolder = "New_Folder"

Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.NameSpace(SysFolder)
objFolder.NewFolder(NewFolder)
Set objFolder = Nothing
Set objShellApp = Nothing

'-------- Варинт 2 ------------------

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CreateFolder SysFolder & NewFolder
Set objFSO = Nothing

!!!НО, на выходе папка создается в c:\Windows\SysWOW64 ….
Подскажите/помогите найти решении этой с виду простой задачи…
Заранее благодарю за ответ.

2

Re: VBS: Создание папки в 64х разрядной системе

TAOSoft
Нет под рукой x64. Вариант 2 точно не создаёт папку?

3 (изменено: TAOSoft, 2016-08-03 16:29:12)

Re: VBS: Создание папки в 64х разрядной системе

Да, вариант 2 точно не создаёт папку в нужном каталоге...

4

Re: VBS: Создание папки в 64х разрядной системе

А если так?:

SysFolder = "C:\Windows\System32\.\"

5 (изменено: TAOSoft, 2016-08-03 16:49:09)

Re: VBS: Создание папки в 64х разрядной системе

Папка создалась в C:\Windows\SysWOW64.

6

Re: VBS: Создание папки в 64х разрядной системе

TAOSoft, Вам бы посты поправить.

ypppu частично помог (с заголовком), а стоило таки эту ссылочку дать.

7 (изменено: TAOSoft, 2016-08-03 16:30:23)

Re: VBS: Создание папки в 64х разрядной системе

Flasher
Понял, принял.... На будущее учту Ваше замечание…
ypppu   Спасибо Вам добрый человек...

Но вопрос все же открытый....

8

Re: VBS: Создание папки в 64х разрядной системе

TAOSoft
Я понимаю, что открытый. Моя задача - ждать ваших действий. Вариант "на будущее" не про данный форум, так уж сложилось. См. концовку по ссылке.

9 (изменено: TAOSoft, 2016-08-03 16:31:13)

Re: VBS: Создание папки в 64х разрядной системе

Flasher
Я учел Ваше замечание, оно было уместным.... Надеюсь, что на текущий момент оформление Вас устаревает.

10 (изменено: Flasher, 2016-08-03 16:36:30)

Re: VBS: Создание папки в 64х разрядной системе

TAOSoft
Тут ещё точки не хватает.

Попробуйте:

SysFolder = "C:\Windows\System32\" -
NewFolder = "New_Folder"

CreateObject("WScript.Shell").CurrentDirectory = SysFolder
CreateObject("Scripting.FileSystemObject").CreateFolder NewFolder

В крайнем случае:

SysFolder = "C:\Windows\System32\"
NewFolder = "New_Folder"
CreateObject("WScript.Shell").Run "cmd /c md " & SysFolder & NewFolder, 0, True

11

Re: VBS: Создание папки в 64х разрядной системе

Flasher
Оба из Ваших вариантов создали папку в C:\Windows\SysWOW64.

12

Re: VBS: Создание папки в 64х разрядной системе

TAOSoft
А что такой скрипт показывает?:

With CreateObject("WScript.Shell")
  .CurrentDirectory = "C:\Windows\System32"
  .PopUp .CurrentDirectory & vbCr & CreateObject("Scripting.FileSystemObject").GetAbsolutePathName("")
End With

13

Re: VBS: Создание папки в 64х разрядной системе

Похоже стандартными средствами эту проблему не обойти. Подробнее.

14

Re: VBS: Создание папки в 64х разрядной системе

http://f6.s.qip.ru/~h2kGxVyr.jpg

15

Re: VBS: Создание папки в 64х разрядной системе

А если так?

SysFolder = "C:\Windows\sysnative\"

16 (изменено: TAOSoft, 2016-08-03 17:51:54)

Re: VBS: Создание папки в 64х разрядной системе

Malcev

Да уважаемый, именно.... Опередили на несколько минут....


Dim SysFolder, NewFolder
SysFolder = "C:\Windows\Sysnative\"
NewFolder = "New_Folder"

Set objShellApp = CreateObject("Shell.Application")
'Set objFolder = objShellApp.NameSpace(SysFolder)
'objFolder.NewFolder(NewFolder)
Set objFolder = Nothing
Set objShellApp = Nothing

Sysnative - решение проблемы!
Спасибо.

17

Re: VBS: Создание папки в 64х разрядной системе

Гуд. Кстати, интересно, если создать в system32 папку Test, такой скрипт Ложь покажет?:

MsgBox CreateObject("Scripting.FileSystemObject").FolderExists("C:\Windows\system32\Test")

18

Re: VBS: Создание папки в 64х разрядной системе

Flasher

Верно, показывает Ложь.

а так:


MsgBox CreateObject("Scripting.FileSystemObject").FolderExists("C:\Windows\Sysnative\Test")

показывает Истина.

19

Re: VBS: Создание папки в 64х разрядной системе

TAOSoft
Хорошо. Будем знать.