1 读取操作系统和CLR的版本
- OperatingSystem os = System.Environment.OSVersion;
- Console.WriteLine(“Platform: { 0 }”, os.Platform);
- Console.WriteLine(“Service Pack: { 0 }”, os.ServicePack);
- Console.WriteLine(“Version: { 0 }”, os.Version);
- Console.WriteLine(“VersionString: { 0 }”, os.VersionString);
- Console.WriteLine(“CLR Version: { 0 }”, System.Environment.Version);
在我的Windows 7系统中,输出以下信息
- Platform: Win32NT
- Service Pack:
- Version: 6.1 . 7600.0
- VersionString: Microsoft Windows NT 6.1 . 7600.0
- CLR Version: 4.0 . 21006.1
2 读取CPU数量,内存容量
可以通过Windows Management Instrumentation (WMI)提供的接口读取所需要的信息。
- private static UInt32 CountPhysicalProcessors()
- {
- ManagementObjectSearcher objects = new ManagementObjectSearcher(
- “SELECT * FROM Win32_ComputerSystem”);
- ManagementObjectCollection coll = objects.Get();
- foreach(ManagementObject obj in coll)
- {
- return (UInt32)obj[“NumberOfProcessors”];
- }
- return 0 ;
- }
- private static UInt64 CountPhysicalMemory()
- {
- ManagementObjectSearcher objects = new ManagementObjectSearcher(
- “SELECT * FROM Win32_PhysicalMemory”);
- ManagementObjectCollection coll = objects.Get();
- UInt64 total = 0 ;
- foreach (ManagementObject obj in coll)
- {
- total += (UInt64)obj[“Capacity”];
- }
- return total;
- }
请添加对程序集System.Management的引用,确保代码可以正确编译。
- Console.WriteLine(“Machine: { 0 }”, Environment.MachineName);
- Console.WriteLine(“# of processors (logical): { 0 }”, Environment.ProcessorCount);
- Console.WriteLine(“# of processors (physical): { 0 }” CountPhysicalProcessors());
- Console.WriteLine(“RAM installed: { 0 :N0} bytes”, CountPhysicalMemory());
- Console.WriteLine(“Is OS 64 -bit? { 0 }”, Environment.Is64BitOperatingSystem);
- Console.WriteLine(“Is process 64 -bit? { 0 }”, Environment.Is64BitProcess);
- Console.WriteLine(“Little-endian: { 0 }”, BitConverter.IsLittleEndian);
- foreach (Screen screen in System.Windows.Forms.Screen.AllScreens)
- {
- Console.WriteLine(“Screen { 0 }”, screen.DeviceName);
- Console.WriteLine(“/tPrimary { 0 }”, screen.Primary);
- Console.WriteLine(“/tBounds: { 0 }”, screen.Bounds);
- Console.WriteLine(“/tWorking Area: { 0 }”,screen.WorkingArea);
- Console.WriteLine(“/tBitsPerPixel: { 0 }”,screen.BitsPerPixel);
- }
3 读取注册表键值对
- using (RegistryKey keyRun = Registry.LocalMachine.OpenSubKey(@”Software/Microsoft/Windows/CurrentVersion/Run”))
- {
- foreach (string valueName in keyRun.GetValueNames())
- {
- Console.WriteLine(“Name: { 0 }/tValue: { 1 }”, valueName, keyRun.GetValue(valueName));
- }
- }
请添加命名空间Microsoft.Win32,以确保上面的代码可以编译。
4 启动,停止Windows服务
这项API提供的实用功能常常用来管理应用程序中的服务,而不必到控制面板的管理服务中进行操作。
- ServiceController controller = new ServiceController(“e-M-POWER”);
- controller.Start();
- if (controller.CanPauseAndContinue)
- {
- controller.Pause();
- controller.Continue();
- }
- controller.Stop();
.net提供的API中,可以实现一句话安装与卸载服务
- if (args[ 0 ] == "/i" )
- {
- ManagedInstallerClass.InstallHelper( new string[] { Assembly.GetExecutingAssembly().Location });
- }
- else if (args[ 0 ] == "/u" )
- {
- ManagedInstallerClass.InstallHelper( new string[] { "/u" , Assembly.GetExecutingAssembly().Location });
- }
如代码所示,给应用程序传入i或u参数,以表示是卸载或是安装程序。