Доработать код(вывести версию операционной системы) - C#

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста доработать код, никак не могу заставить выводить версию ос через WinApi. Пробовал и через структуру, и через класс.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Runtime.InteropServices;
  7. namespace winAPIS
  8. {
  9. [StructLayout(LayoutKind.Sequential)]
  10. public class OSVersionInfo
  11. {
  12. public int dwOSVersionInfoSize;
  13. public String szCSDVersion;
  14. }
  15. class Program
  16. {
  17. [DllImport("kernel32.dll")]
  18. static extern uint GetSystemDirectory([Out] StringBuilder lpBuffer,
  19. uint uSize);
  20. [DllImport("Kernel32")]
  21. public static extern bool GetComputerName(StringBuilder buffer, ref uint size);
  22. [DllImport("advapi32.dll")]
  23. static extern bool GetUserName(StringBuilder sb, ref uint length);
  24. [DllImport("kernel32.dll")]
  25. public static extern bool GetVersionEx([In, Out] OSVersionInfo osvi);
  26. [DllImport("kernel32.dll")]
  27. extern static short QueryPerformanceCounter(ref long x);
  28. [DllImport("kernel32.dll")]
  29. extern static short QueryPerformanceFrequency(ref long x);
  30. [DllImport("winmm.dll")]
  31. protected static extern int mciSendString
  32. (string mciCommand,
  33. StringBuilder returnValue,
  34. int returnLength,
  35. IntPtr callback);
  36.  
  37. static void Main(string[] args)
  38. {
  39. StringBuilder buffer = new StringBuilder(128);
  40. StringBuilder tmp = new StringBuilder(128);
  41. GetSystemDirectory(tmp, 128);
  42. Console.WriteLine(buffer + "Системный каталог: " + tmp);
  43. uint l = 128;
  44. GetComputerName(tmp, ref l);
  45. Console.WriteLine(buffer + "Название компьютера: " + tmp);
  46. GetUserName(tmp, ref l);
  47. Console.WriteLine(buffer + "Имя пользователя: " + tmp);
  48. OSVersionInfo osvi = new OSVersionInfo();
  49. osvi.dwOSVersionInfoSize = Marshal.SizeOf(osvi);
  50. GetVersionEx(osvi);
  51. Console.WriteLine("Версия ОС: " + OSVersionInfo);
  52. long ctr1 = 0, ctr2 = 0, freq = 0;
  53. int acc = 0, i = 0;
  54. if (QueryPerformanceCounter(ref ctr1) != 0) // Begin timing.
  55. {
  56. for (i = 0; i < 100; i++) acc++; // Code being timed.
  57. QueryPerformanceCounter(ref ctr2); // Finish timing.
  58. Console.WriteLine("\nНачальное значение: " + ctr1);
  59. Console.WriteLine("Конечное значение: " + ctr2);
  60. QueryPerformanceFrequency(ref freq);
  61. Console.WriteLine("QueryPerformanceCounter minimum resolution: 1/" + freq + " секунд.");
  62. Console.WriteLine("100 Increment time: " + (ctr2 - ctr1) * 1.0 / freq + " секунда.");
  63. }
  64. else
  65. Console.WriteLine("High-resolution counter not supported.");
  66. Console.WriteLine("\nСледующая часть кода демонстрирует открытие/закрытие дисковода");
  67. Console.WriteLine("\nХотите начать?\n1: Да\n2: Нет");
  68. Console.WriteLine("\nВаш выбор: ");
  69. if (Console.ReadKey().Key == ConsoleKey.D1)
  70. {
  71. Console.WriteLine("\nДисковод открывается");
  72. int result = mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);
  73. Console.WriteLine("\nХотите закрыть Дисковод?\n1: Да\n2: Нет");
  74. Console.WriteLine("\nВаш выбор: ");
  75. if (Console.ReadKey().Key == ConsoleKey.D1)
  76. {
  77. Console.WriteLine("\nДисковод закрывается");
  78. result = mciSendString("set cdaudio door closed", null, 0, IntPtr.Zero);
  79. Console.WriteLine("\nНажмите ENTER для завершения");
  80. }
  81. else
  82. {
  83. Console.WriteLine("\n\n\n\nОк!");
  84. Console.WriteLine("\nНажмите ENTER для завершения");
  85. }
  86. Console.Read();
  87. }
  88. }
  89. }
  90. }

Решение задачи: «Доработать код(вывести версию операционной системы)»

textual
Листинг программы
  1. [StructLayout(LayoutKind.Sequential)]
  2. public class OSVersionInfo
  3. {    
  4.     public int dwOSVersionInfoSize;
  5.     public uint dwMajorVersion;
  6.     public uint dwMinorVersion;
  7.     public uint dwBuildNumber;
  8.     public uint dwPlatformId;
  9.     [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
  10.     public string szCSDVersion;
  11. }
  12.    
  13. [DllImport("kernel32.dll")]
  14. public static extern bool GetVersionEx([In,Out]OSVersionInfo osvi);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы