<p>You can definitely use Group Policy to grant users rights to start / stop services. You just need to modify the security descriptor on the service using the “Security” group policy client side extension.</p>
<p>A very slight caveat: I have seen cases where some services don’t like the default permission that a group policy-based modification puts on a service (look at this posting about the Windows Search service if you want to see what I’m talking about: <a href="http://peeved.org/blog/2007/12/07">http://peeved.org/blog/2007/12/07</a>), but that has been uncommon in my experience.</p>
<p>In order to “see” the service in the Group Policy editor you’ll need to do the editing on a computer that has the service installed. (If this is a stock Windows service then it’s no big deal, but if it’s something third-party get on a machine that has it installed, “runas” a copy of MMC, and snap-in a Group Policy editor targeted at the GPO where you want to put these settings.)</p>
<p>Under “Computer Settings”, “Windows Settings”, “Security Settings”, and “System Services”, locate the service you want to grant start / stop permission to and define a policy setting. You have to choose a startup type. Click “Edit Security” and modify the default ACL to include the permissions you’re looking for.</p>
<p>I’d recommend testing the GPO on a constrained group of computers (either by linking the GPO to a test OU with a single computer, or by filtering the GPO to only a single computer) and making sure it does what you want before you go changing the security on all your computers only to find out it doesn’t do what you want.</p>
<p>Here’s some background on what the various entries in an ACE mean for services:</p>
<ul>
<li>
<p><a href="http://support.microsoft.com/kb/914392">http://support.microsoft.com/kb/914392</a></p>
</li>
<li>
<p><a href="http://msmvps.com/blogs/alunj/archive/2006/02/13/83472.aspx">http://msmvps.com/blogs/alunj/archive/2006/02/13/83472.aspx</a></p>
</li>
</ul>
<p>To see the descriptors in SDDL notation, use the “sc sdshow service-name” command.</p>
<p>Edit:</p>
<p>Delegated permission to create new services is going to be a little bit tough. There is a “SC_MANAGER_CREATE_SERVICE” right that can be granted to users on the service control manager (SCM) object in the global object manager.</p>
<p>In Windows versions up to Windows Server 2003, the rights could not be changed on the SCM. Starting in W2K3 SP1, you could change the rights on the SCM.</p>
<p>The API to change the security is <em>SetServiceObjectSecurity</em>, and more information is available here: <a href="http://msdn.microsoft.com/en-us/library/aa379589(VS.85).aspx">http://msdn.microsoft.com/en-us/library/aa379589(VS.85).aspx</a></p>
<p>Some more reference re: the rights that can be granted to the SCM and the default DACL set on the SCM is available here: <a href="http://msdn.microsoft.com/en-us/library/ms685981(VS.85).aspx">http://msdn.microsoft.com/en-us/library/ms685981(VS.85).aspx</a></p>
<p>In short, there’s no way to do this w/o writing code. There’s no magic registry setting, etc. If you can get somebody to write the code for you, though, it’s totally feasible.</p>