Как сделать так чтобы можно было перезапустить службу под юзером,
например Диспетчер печати (spooler).

1.редактируем defltwk.inf в строке
Spooler,2,"D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

AU-означает аутэнтификейтед user или просто user. PU-означает power user. BA-означает администратор. SY-означает system.
копируем буковки из администратора к юзеру.

2. выполняем Secedit /configure /db C:\windows\temp\temp.mdb /Cfg c:\windows\inf\defltwk.inf /areas services
3. перезагрузка. готово. простой пользователь может перезапустить службу spooler.


Если службу нужно перезапускать часто, то можно создать на рабочем столе cmd файл со строками
net stop spooler
net start spooler

вместо cmd файла можно использовать vbs скрипт.
вот три варианта:
Script-1 - взят с ezine выводит командную строку на экран
Script-2 - взят с http://techtasks.com/code/viewbookcode/ -работает без вывода командной строки на экран, если служба остановлена ,то выполнение прекращается,что не есть хорошо
Script-3 - http://techtasks.com/code/viewbookcode/ -работает без вывода командной строки, если служба остановлена, то выполнение не прекращается.

разрешения для пользователей на операции со службой spooler(для других служб аналогично) лежат в разделе :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler\Security
в параметре Security тип REG_BINARY
если этот параметр удалить, то можно без пунктов 1-2 перезапускать службу, но только с правами продвинутый пользователь.
если у вас уже есть служба которую user может перезапустить, то можно вместо пунктов 1-2 просто скопировать этот параметр в желаемую службу.