tags:

views:

57

answers:

2

I have an issue with a Windows Service which throws a NullReference exception whenever I try to use

var myType = Activator.CreateInstance(typeof(MyType))

There is no problem whenever I run the exact same code in a console window - and after debugging the obvious "which user is running this code" I doubt that it is a mere fact of changing the user running the service as I've tried to run the service using the computer's Administrator account as well as LocalSystem. I'm suspecting a Windows Update fiddling with default user rights but that's a bit of a desperate guess I feel.

Remember: The type and assembly exist and works fine - otherwise I wouldn't be able to run the code in a console window. It is only when running in the context of a Windows Service I get an error.

The question is: Can I in any way impersonate i.e. LocalSystem in a unittest by creating a GenericPrincipal (how would that GenericPrincipal look)?

A: 

I know its a simple answer but have you tried putting it in a try catch block then writing out the exception to see if it is Permission based or otherwise.

Chris
Write out the value of each of those parameters before the call to see if any are null. Alternatively throw an exception if they are null but with a specific message you can understand
Chris
+1  A: 

You could always run a visual studio instance as LocalSystem. From the command line, enter the following:

at <time in near future> /interactive  <path to devenv.exe>

Then wait for that time to roll around and VS should open up, but will be running under the LocalSystem account.

I'd personally not suspect the user account, and instead suspect that it's something to do with being interactive - does the constructor or class constructor for MyType have some implicit dependency on the desktop?

(Edit - oops, should be time before /interactive, corrected command line).

e.g.

at 11:48 /interactive "c:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
Damien_The_Unbeliever
The implicit dependency may be a good guess
Seb