I've found a few similar questions that asks this question but usually in the context of being able to look at the server or access the desktop. A few answers to this question mention how to do it remotely:
How do I tell if .NET 3.5 SP1 is installed?
But I'm not sure the answers are accurate or possible in my situation.
So TL;DR: whats a definitive way to determine not only the framework version and service packs, but also the windows server OS itself (im not even sure at this point), without having login access?
Explanation: I'm developing an intranet asp.net application that is hosted on a server I do not have access to. I can not remote desktop in. I don't have a login. The only thing I have access to is the virtual directory of my website's file system. Now, my site errors out when I add these assemblies:
<add assembly="System.Web.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Research pointed to the fact that .net 3.5 service pack 1 must be installed on the web server to get those added assemblies.
I used this code, and this code, ran both in a webpage and the results come back showing the same thing: that framework 3.5 is installed without sp1.
So I emailed the IT group that runs the server and told them they didn't have sp1 installed. Well that caught some higher ups attention and there's some heat coming back from this email. The IT group then emailed back and said they actually have SP2 installed which would include all the SP1 stuff. I reran the tests and I get the same results. Which is worrisome, because if they didn't have it installed before, they sure would have tried installing it now... So I'm worried the code I'm using doesn't work, or doesn't detect if they have SP2 installed. My assemblies still aren't detected by the server.
I'm looking pretty bad at the moment and I'd want to apologize asap if I was wrong about this or really show they don't have it installed.