"gourmet" <tr***@jos.zzn.comwrote in message
news:11*********************@o5g2000hsb.googlegrou ps.com...
Hello!
I need to restart the "Windows Audio Service" (audiosrv) via C#. I'm
using the ServiceController Class to do this.
It is no problem under XP and no problem under vista if UAC is
disabled.
But with enabled UAC i'm getting a "access refused" exception.
I also tried to do it via console with "net start ..." but the same
error appears.
Three questions:
1. Is it possible to restart the "windows audio service" if UAC is
enabled ?
Yes when running as full "Administrator". That is start the console (cmd interpreter) by
right clicking "Run as Administrator".
2. Why does the exception occur? If I do some other stuff, e.g.
starting regedit via Process.Start() the user gets asked if he really
wants that. I would expect the same behaviour for restarting
services.
The exception occurs because you are running as a standard user, only admins can start, stop
.... services.
If you want the same behavior you'll have to insert a "manifest" in your executable file.
<?xml version="1.0" encoding="utf-8" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86"
name="someExecName"
type="win32" />
<description>Program description</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
To add above manifest to the executable assembly, you have to run mt.exe like this;
mt -manifest somename.exe.manifest -outputresource:somename.exe;#1
PS change the someExecName and Program description to suit your needs...
3. If it's not possible at all: Can I find out programmatically
whether UAC is enabled?
See above.
Willy.