Beste mede-tweakers,
Ik heb een service in C# geschreven, dat via WMI een printer poort aan zou moeten maken. Dit werkt prima, als ik het op een Windows 7 Pro machine laat draaien. Dit werkt ook prima, als ik dit losse stukje code via een console laat draaien. Echter, dit werkt niet, als ik het laat draaien via de service. Ik krijg dan een 'access denied' error terug in de eventlog. Dit overigens op een Windows XP machine.
Wat heb ik al geprobeerd:
- De Windows service onder Administrator account laten draaien (dit moet sowieso straks)
- De Windows service onder eigen account (met admin rechten) laten draaien
- De Windows service onder Local System rechten laten draaien
- WBEM map in %windir%\system32 doorlopen
- Gezocht op eventuele access rights op verschillende sites (waaronder MSDN)
Niets lijkt mij echter de oplossing te kunnen geven. Als het helemaal niet zou werken, dan zou ik nog verder komen, maar het werkt alleen niet als het een service betreft.
Hierbij het kleine stukje code:
De foutmelding die terugkomt vanuit returnArray[1] is:
Nogmaals: als ik het via console en de lokale user met admin rechten draai, werkt het perfect. Het enige verschil is de service.
Wie heeft er de oplossing of kan mij in de juiste hoek laten zoeken qua denkwijze ? Is er iets substansieels anders qua rechten met een service? Zo ja, welke rechten zijn er dan anders en hoe kan ik het oplossen?
Bedankt alvast!
Ik heb een service in C# geschreven, dat via WMI een printer poort aan zou moeten maken. Dit werkt prima, als ik het op een Windows 7 Pro machine laat draaien. Dit werkt ook prima, als ik dit losse stukje code via een console laat draaien. Echter, dit werkt niet, als ik het laat draaien via de service. Ik krijg dan een 'access denied' error terug in de eventlog. Dit overigens op een Windows XP machine.
Wat heb ik al geprobeerd:
- De Windows service onder Administrator account laten draaien (dit moet sowieso straks)
- De Windows service onder eigen account (met admin rechten) laten draaien
- De Windows service onder Local System rechten laten draaien
- WBEM map in %windir%\system32 doorlopen
- Gezocht op eventuele access rights op verschillende sites (waaronder MSDN)
Niets lijkt mij echter de oplossing te kunnen geven. Als het helemaal niet zou werken, dan zou ik nog verder komen, maar het werkt alleen niet als het een service betreft.
Hierbij het kleine stukje code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| public object[] createIPPrinterPort(string portIP) { object[] returnArray = new object[2]; try { ManagementClass portClass = new ManagementClass("Win32_TCPIPPrinterPort"); ManagementObject portObject = portClass.CreateInstance(); portObject["Name"] = portIP; portObject["HostAddress"] = portIP; portObject["PortNumber"] = "9100"; portObject["Protocol"] = 1; portObject["SNMPCommunity"] = "public"; portObject["SNMPEnabled"] = true; portObject["SNMPDevIndex"] = 1; PutOptions options = new PutOptions(); options.Type = PutType.UpdateOrCreate; //put a newly created object to WMI objects set portObject.Put(options); returnArray[0]= true; returnArray[1] = "Poort aangemaakt"; return returnArray; } catch (ManagementException me) { //Console.WriteLine(me.ErrorInformation); returnArray[0] = false; returnArray[1] = me.ToString(); return returnArray; } } |
De foutmelding die terugkomt vanuit returnArray[1] is:
code:
1
2
3
4
| System.Management.ManagementException: Toegang geweigerd bij System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) bij System.Management.ManagementObject.Put(PutOptions options) bij VNBSelector.Printers.createIPPrinterPort(String portIP) in D:\Development\Visual Studio Projects\VNB\VNSelector\VNSelector\Classes\Printers.cs:regel 58 |
Nogmaals: als ik het via console en de lokale user met admin rechten draai, werkt het perfect. Het enige verschil is de service.
Wie heeft er de oplossing of kan mij in de juiste hoek laten zoeken qua denkwijze ? Is er iets substansieels anders qua rechten met een service? Zo ja, welke rechten zijn er dan anders en hoe kan ik het oplossen?
Bedankt alvast!
[ Voor 0% gewijzigd door Massiefje op 31-01-2012 20:23 . Reden: Onduidelijkheid opgelost (XP is het probleem) ]