Поднимите сценарии Powershell

private void UpClick()
{
    // only if the first item isn't the current one
    if(listBox1.ListIndex > 0)
    {
        // add a duplicate item up in the listbox
        listBox1.AddItem(listBox1.Text, listBox1.ListIndex - 1);
        // make it the current item
        listBox1.ListIndex = (listBox1.ListIndex - 2);
        // delete the old occurrence of this item
        listBox1.RemoveItem(listBox1.ListIndex + 2);
    }
}

private void DownClick()
{
   // only if the last item isn't the current one
   if((listBox1.ListIndex != -1) && (listBox1.ListIndex < listBox1.ListCount - 1))
   {
      // add a duplicate item down in the listbox
      listBox1.AddItem(listBox1.Text, listBox1.ListIndex + 2);
      // make it the current item
      listBox1.ListIndex = listBox1.ListIndex + 2;
      // delete the old occurrence of this item
      listBox1.RemoveItem(listBox1.ListIndex - 2);
   }
}
11
задан 26 June 2009 в 17:44
поделиться

4 ответа

Задача больше похожа на setuid, чем на sudo ... и, к счастью, setuid возможна: вы можете просто создать запланированную задачу ( без установленного расписания ) и установите его на выполнение с повышенными правами . Затем дайте своим пользователям права выполнять эту задачу. Я описал процесс в сообщении блога некоторое время назад вместе со сценарием PowerShell, который помогает создавать задачи и ярлыки для их выполнения.

Проблема (как предложил JaredPar) в том, что вы должны убедиться, что приложения, которые вы запланировали запускать с повышенными привилегиями или «от имени администратора», защищены, и это особенно верно, если вы будете запускать сценарий. Убедитесь, что никто, кроме администратора (ов) не может редактировать или заменять этот сценарий, иначе вы раздаете пресловутые ключи от королевства.

8
ответ дан 3 December 2019 в 05:59
поделиться

, если вы используете V2, вы можете использовать следующее, которое есть в блоге команды PowerShell

Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList '-command "Get-Process"'

. Это запустит "Get- Процесс »от имени администратора.

Если у вас нет версии 2, вы можете создать объект StartInfo и установить для параметра Verb значение Runas следующим образом.

function Start-Proc  {   
     param ([string]$exe = $(Throw "An executable must be specified"),[string]$arguments)       

     # Build Startinfo and set options according to parameters  
     $startinfo = new-object System.Diagnostics.ProcessStartInfo   
     $startinfo.FileName = $exe  
     $startinfo.Arguments = $arguments  
     $startinfo.verb = "RunAs"  
     $process = [System.Diagnostics.Process]::Start($startinfo)  

}

У меня есть сообщение в блоге , в котором говорится немного больше об использовании объекта System.Diagnostics.ProcessStartInfo.

6
ответ дан 3 December 2019 в 05:59
поделиться

Похоже, вы ищете эквивалент sudo в Windows. Sudo не присущ Windows, как большинству сред в стиле Unix. Но есть несколько доступных инструментов, которые являются близкими эквивалентами.

Однако будьте осторожны при использовании этих типов инструментов. . Незащищенный сценарий + sudo представляет угрозу безопасности.

1
ответ дан 3 December 2019 в 05:59
поделиться

Расширения сообщества Powershell включают для этого командлет, псевдоним 'su'. http://www.codeplex.com/Pscx

4
ответ дан 3 December 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: