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);
}
}
Задача больше похожа на setuid, чем на sudo ... и, к счастью, setuid возможна: вы можете просто создать запланированную задачу ( без установленного расписания ) и установите его на выполнение с повышенными правами . Затем дайте своим пользователям права выполнять эту задачу. Я описал процесс в сообщении блога некоторое время назад вместе со сценарием PowerShell, который помогает создавать задачи и ярлыки для их выполнения.
Проблема (как предложил JaredPar) в том, что вы должны убедиться, что приложения, которые вы запланировали запускать с повышенными привилегиями или «от имени администратора», защищены, и это особенно верно, если вы будете запускать сценарий. Убедитесь, что никто, кроме администратора (ов) не может редактировать или заменять этот сценарий, иначе вы раздаете пресловутые ключи от королевства.
, если вы используете 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.
Похоже, вы ищете эквивалент sudo в Windows. Sudo не присущ Windows, как большинству сред в стиле Unix. Но есть несколько доступных инструментов, которые являются близкими эквивалентами.
Однако будьте осторожны при использовании этих типов инструментов. . Незащищенный сценарий + sudo представляет угрозу безопасности.
Расширения сообщества Powershell включают для этого командлет, псевдоним 'su'. http://www.codeplex.com/Pscx