Указанный файл не может быть найден - PullRequest
0 голосов
/ 15 февраля 2019

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

Я хочу иметь возможность запускать это как администратор с самого начала скрипта.Проблема заключается в wshShell.Run(Command_3A) 'Lightspeed.Программа отлично работает до этого момента, но затем дает мне Указанный файл не может быть найден.

Все работало нормально, пока я не вставил команду Runas admin.Я полагаю, что это где-то там.Вот часть Runas admin.

Set wshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Length = 0 Then
  Set objShell = CreateObject("Shell.Application")
  objShell.ShellExecute "wscript.exe" _
    , Chr(34) & WScript.ScriptFullName & Chr(34) & " RunAsAdministrator", , "runas", 1
  WScript.Quit
End If

Вот весь код.

Set wshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.Length = 0 Then
  Set objShell = CreateObject("Shell.Application")
  objShell.ShellExecute "wscript.exe" _
    , Chr(34) & WScript.ScriptFullName & Chr(34) & " RunAsAdministrator", , "runas", 1
  WScript.Quit
End If

spath = "C:\ThumbDrive"

' Step 1 - Set Power Settings
Command_1A = "powercfg /change standby-timeout-ac 0"
Command_1B = "powercfg /change standby-timeout-dc 15"
Command_1C = "powercfg /change monitor-timeout-ac 0"
Command_1D = "powercfg /change monitor-timeout-dc 15"
Command_1E = "powercfg /change hibernate-timeout-ac 0"
Command_1F = "powercfg /change hibernate-timeout-dc 15"

wshShell.Run "cmd /k " & Command_1A & "&" & Command_1B & "&" & Command_1C & "&" & Command_1D & "&" & Command_1E & "&" & Command_1F & "& exit"

WScript.Sleep 3000 

' Step 2 - Remove Bloatware (Win10Apps)

' Step 3 - Install wanted programs
Command_3A = Chr(34) & spath & "\Programs\Lightspeed\UserAgentx64 V2.1.14.msi" & Chr(34)
Command_3B = Chr(34) & spath & "\Programs\AcroRdrDC1801120058_en_US.exe" & Chr(34) & "& /sAll "
Command_3C = Chr(34) & spath & "\Programs\AzMERITSecureBrowser10.4-2018-08-02.msi" & Chr(34) & "& /passive "
Command_3D = Chr(34) & spath & "\Programs\jre-8u201-windows-x64.exe" & Chr(34) & "& /s "
Command_3E = Chr(34) & spath & "\Programs\ChromeStandaloneSetup64.exe" & Chr(34) & "& /silent /install "
Command_3F = Chr(34) & spath & "\Programs\ESet Rip and Replace.exe" & Chr(34)

wshShell.Run(Command_3A) 'LightSpeed
WScript.Sleep 4000 
wshShell.Run(Command_3B) 'Adobe Reader
WScript.Sleep 30000 
wshShell.Run(Command_3C) 'AzMerit
WScript.Sleep 4000 
wshShell.Run(Command_3D) 'Java
WScript.Sleep 30000 
wshShell.Run(Command_3E) 'Chrome
WScript.Sleep 30000
wshShell.Run(Command_3F) 'Eset

Итак, я знаю, что UAC работает и весь код работает без контроля UAC.Может кто-нибудь помочь мне выяснить, почему контроль UAC ломает все.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Мне пришлось создать поле ввода, чтобы указать, что было sPath, и оставить показания UAC из C:\WINDOWS\system32.Он прекрасно работает, просто хотелось бы, чтобы он работал без поля ввода.

0 голосов
/ 15 февраля 2019

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

Указывает на C:\WINDOWS\system32 для сценария повышенного уровня .Вы можете либо

  • передать текущий рабочий каталог из невыполненного процесса в повышенный, либо
  • извлечь его из свойства Wscript.ScriptFullName.

Оба метода иллюстрируются в следующем фрагменте кода:

Set wshShell = WScript.CreateObject("WScript.Shell")
spath = wshShell.CurrentDirectory

If WScript.Arguments.Length = 0 Then
  Set objShell = CreateObject("Shell.Application")
  objShell.ShellExecute "wscript.exe" _
    , Chr(34) & WScript.ScriptFullName & Chr(34) _
      & " RunAsAdministrator " & Chr(34) & spath & Chr(34), , "runas", 1
  WScript.Quit
End If

'' take out the supplied value:
spath = WScript.Arguments(1)
'' find out where the script resides:
shtap = Left( WScript.ScriptFullName, _
    Len( WScript.ScriptFullName) - Len( WScript.ScriptName) -1 )

'' debugging output
Wscript.Echo CStr( WScript.Arguments.Length) & _
  vbNewLine & Chr(34) & WScript.Arguments(0) & Chr(34) & _
  vbNewLine & Chr(34) & spath & Chr(34) & _ 
  vbNewLine & Chr(34) & shtap & Chr(34) & _ 
  vbNewLine & Chr(34) & wshShell.CurrentDirectory & Chr(34) 

' Step 1 - Set Power Settings

Вывод (с использованием cscript.exe Windows Script Host ):

2
"RunAsAdministrator"
"D:\bat\SO"
"D:\bat\SO"
"C:\WINDOWS\system32"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...