I'm making the assumption here that you're trying to work with the Windows OS and so the solution below will only work with Windows. Please clarify your question with this information if this is not correct.
You can use the WMI interface to access a huge amount of information from Windows-based machines remotely - "WMI is intended to monitor the hardware and software on remote computers. Remote connections for WMI in .NET Framework are accomplished through the ManagementScope object."
See the tutorial on how to do this in C# here: http://msdn.microsoft.com/en-us/library/ms257337(v=vs.80).aspx