Что нового

takeown.exe, icacls.exe. Перенос из Cmd на AutoIt

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Версия AutoIt: 3.3.14.0

Описание:

Здравствуйте.

Моя ОС: MS Windows 7 Pro SP1 x64 Rus

1) Есть 100%но рабочий файл 1.cmd с текстом внутри:
Код:
"%WinDir%\System32\takeown.exe" /f "%SystemDrive%\Users\All Users\Microsoft\User Account Pictures" /r /D Y
"%WinDir%\System32\icacls.exe" "%SystemDrive%\Users\All Users\Microsoft\User Account Pictures" /grant "%USERDOMAIN%\%USERNAME%":(F) /t

2) Делаю перенос файла 1.cmd на AutoIt

3) Получился вот такой код:
Код:
$1 = '"%WinDir%\System32\takeown.exe" /f "%WinDir%\Resources" /r /D Y'
$2 = '"%WinDir%\System32\icacls.exe" "%WinDir%\Resources" /grant "%USERDOMAIN%\%USERNAME%":(F) /t'

RunWait (@ComSpec & " /c " & $1, "", @SW_HIDE)
RunWait (@ComSpec & " /c " & $2, "", @SW_HIDE)
4) В SciTE делаю Tools -> Go
5) Полученный код
Код:
$1 = '"%WinDir%\System32\takeown.exe" /f "%WinDir%\Resources" /r /D Y'
$2 = '"%WinDir%\System32\icacls.exe" "%WinDir%\Resources" /grant "%USERDOMAIN%\%USERNAME%":(F) /t'

RunWait (@ComSpec & " /c " & $1, "", @SW_HIDE)
RunWait (@ComSpec & " /c " & $2, "", @SW_HIDE)
не работает.

Пожалуйста, напишите мне, что я делаю не так.

Спасибо.
 
A

Alofa

Гость
Вариант №1:
Код:
$1 = '"%WinDir%\System32\takeown.exe" /f "%WinDir%\Resources" /r /D Y'
$2 = '"%WinDir%\System32\icacls.exe" "%WinDir%\Resources" /grant "%USERDOMAIN%\%USERNAME%":(F) /t'

MsgBox(0, 'До применения "AutoItSetOption()":', 'Значение переменной $1:' &@LF& $1 &@LF&@LF& 'Значение переменной $2:' &@LF& $2)

Opt('ExpandEnvStrings', 1)

MsgBox(0, 'После применения "AutoItSetOption()":', 'Значение переменной $1:' &@LF& $1 &@LF&@LF& 'Значение переменной $2:' &@LF& $2)

RunWait($1, "", @SW_HIDE)
RunWait ($2, "", @SW_HIDE)

Но в Autoit принято пользоваться Макросами:
Код:
$1 = '"' & @SystemDir & '\takeown.exe" /f "' & @WindowsDir & '\Resources" /r /D Y'
$2 = '"' & @SystemDir & '\icacls.exe" "' & @WindowsDir & '\Resources" /grant "' & @LogonDomain & '\' & @UserName & '":(F) /t'
; Только учтите, что макрос "@SystemDir" в Win x64 это "C:\Windows\SysWOW64"

MsgBox(0, 'Значения:', 'Значение переменной $1:' &@LF& $1 &@LF&@LF& 'Значение переменной $2:' &@LF& $2)

RunWait($1, "", @SW_HIDE)
RunWait ($2, "", @SW_HIDE)
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Alofa сказал(а):
Вариант №1:
Код:
$1 = '"%WinDir%\System32\takeown.exe" /f "%WinDir%\Resources" /r /D Y'
$2 = '"%WinDir%\System32\icacls.exe" "%WinDir%\Resources" /grant "%USERDOMAIN%\%USERNAME%":(F) /t'

MsgBox(0, 'До применения "AutoItSetOption()":', 'Значение переменной $1:' &@LF& $1 &@LF&@LF& 'Значение переменной $2:' &@LF& $2)

Opt('ExpandEnvStrings', 1)

MsgBox(0, 'После применения "AutoItSetOption()":', 'Значение переменной $1:' &@LF& $1 &@LF&@LF& 'Значение переменной $2:' &@LF& $2)

RunWait($1, "", @SW_HIDE)
RunWait ($2, "", @SW_HIDE)
Попробовал в Вашем коде заменить %WinDir%\System32 на C:\Ава Привет - Ваш код не работает.
 
A

Alofa

Гость
SharkyEXE сказал(а):
... Ваш код не работает.
Надеюсь вы понимаете к каким файлам обращаетесь и что этим хотите сделать? А также то, что скрипт необходимо запускать от имени Администратора и прописать в код:
Код:
#RequireAdmin
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Alofa сказал(а):
Надеюсь вы понимаете к каким файлам обращаетесь и что этим хотите сделать? А также то, что скрипт необходимо запускать от имени Администратора и прописать в код:
Код:
#RequireAdmin
Я все к чему - если Ваш код переписать как
Код:
$1 = '"C:\Ава Привет\takeown.exe" /f "%WinDir%\Resources" /r /D Y'
$2 = '"C:\Ава Привет\icacls.exe" "%WinDir%\Resources" /grant "%USERDOMAIN%\%USERNAME%":(F) /t'

MsgBox(0, 'До применения "AutoItSetOption()":', 'Значение переменной $1:' &@LF& $1 &@LF&@LF& 'Значение переменной $2:' &@LF& $2)

Opt('ExpandEnvStrings', 1)

MsgBox(0, 'После применения "AutoItSetOption()":', 'Значение переменной $1:' &@LF& $1 &@LF&@LF& 'Значение переменной $2:' &@LF& $2)

RunWait($1, "", @SW_HIDE)
RunWait ($2, "", @SW_HIDE)
то Ваш код будет 100%но работать?
Обращаю внимание на наличие русских букв и пробелов в пути C:\Ава Привет
 
A

Alofa

Гость
SharkyEXE сказал(а):
...Обращаю внимание на наличие русских букв и пробелов в пути C:\Ава Привет
Во-первых, для начала посмотрите Вопрос темы и скажите, о чем мы тут болтаем?

SharkyEXE сказал(а):
Во-вторых, этот код не мой, а ваш. Я лишь помогаю его переделать из CMD в Autoit.

SharkyEXE сказал(а):
... будет 100%но работать?
100%!
Вопрос в другом: а будут ли работать программы? А не в том, что в пути присутствует кириллица.
 
Верх