VBS запустить программу от имени администратора и с уровнем приоритета - PullRequest
0 голосов
/ 09 февраля 2019

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

В настоящее время я запустил программу от имени администратора, но застрял при настройке уровня процесса.

Set app = CreateObject("Shell.Application")
app.ShellExecute """d:\SYNC\Dropbox\PORTABLE_PROGRAMS\ahk\Navigare\KeyboardEnchancer\KeyboardEnchancer.exe""", , , "runas", 3

1 Ответ

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

Я отредактировал ответ для решения вашей проблемы с правами доступа: теперь скрипт самоподъемно запускается от имени администратора, дополнительную информацию см. По адресу: Как автоматически поднять Vbscript для запуска его от имени администратора? .Протестировано и безупречно работает на моей машине.

If WScript.Arguments.length = 0 Then

  Set objShell = CreateObject("Shell.Application")
   'Pass a bogus argument, say [ uac]
  objShell.ShellExecute "wscript.exe", Chr(34) & _
    WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1

Else

    Set objShell= CreateObject("Shell.Application")

    strComputer = "."
    Const HIGH_PRIORITY = 128
    processName = "notepad.exe"   ' The process name of your app
    appName = "C:\Windows\System32\notepad.exe" ' The app you want to run

    objShell.ShellExecute appName, , , "runas", 1

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colProcesses = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = '" & processName & "'")

    For Each p in colProcesses  
        p.SetPriority(HIGH_PRIORITY)
    Next

End If

Подробнее: Метод SetPriority класса Win32_Process и Метод ShellExecute .

...