I have developed a windows service using .net . My service makes some calls to unmanaged code like follows –
[DllImport("cmxConnect.dll")]
private unsafe static extern String cmxQuery([MarshalAs(UnmanagedType.LPStr)] String s, long* connPointer);
I have placed cmxConnect.dll within the same folder as the service executable. The service starts fine if I set the logon user to be my domain account. But if I start the service using the local system account I get DLL not found exceptions. I am guessing there is something in my environment settings thats enables windows to find cmxConnect.dll. Can someone point out what exactly this is?
The Local System account is pretty powerful. It’s possible that the DLL search order is disabled for this account for security. (If it goes searching just by name, and somebody manages to put a malicious DLL somewhere in the search order, then you’ve got an escalation of privilege vulnerability.) If it’s a .NET service, you probably want to add your DLL to your manifest and get your DLL installed in the GAC. (I’m not a .NET guy. I’ve just heard these terms before.)