Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
31.01.2022
Размер:
133.65 Кб
Скачать

Системное программное обеспечение Лаб. Работа № 1

Основы программирования с использованием Windows API

#include <windows.h> #include <iostream>

#define MAX_BUFFER_SIZE 256 #define MAX_VALUE_NAME 16383

using namespace std;

int main() {

//Определение текущего значения счетчика до пункта 1

LARGE_INTEGER li; QueryPerformanceCounter(&li); LONGLONG t1 = li.QuadPart;

//Определение версии ОС

DWORD info, version, platform, major, minor; info = GetVersion();

version = info & 0x0000ffff; major = version & 0x000000ff; minor = version >> 8; platform = info >> 16;

cout << "\nWindows v" << major << "." << minor<< " (build " << platform << ")" << endl;

//Определение текущего значения счетчика после пункта 1

QueryPerformanceCounter(&li); LONGLONG t2 = li.QuadPart;

//Определение системного каталога char buffer[MAX_BUFFER_SIZE];

GetSystemDirectory(buffer, MAX_BUFFER_SIZE); cout << "System Directory: " << buffer << endl;

//Определение названия компьютера

DWORD BufCharCount = MAX_BUFFER_SIZE; GetComputerName(buffer, &BufCharCount); cout << "Computer Name: " << buffer << endl;

//Определение псевдонима текущего пользователя

GetUserName(buffer, &BufCharCount);

cout << "User Name: " << buffer << "\n" << endl;

//Определение характеристик томов char Names[MAX_BUFFER_SIZE]; ULARGE_INTEGER FreeBytesAvailable; ULARGE_INTEGER TotalNumberOfBytes;

HANDLE search = FindFirstVolume(buffer, MAX_BUFFER_SIZE);//Определение служебного имени первого тома

cout << "Volumes and characteristics: " << "\n" << endl; do {

cout << buffer << endl;//Вывод служебного имени очередного тома

1

//Определение первого пути в файловой системе для очередного тома

GetVolumePathNamesForVolumeName(buffer, Names, MAX_BUFFER_SIZE, &BufCharCount); char* path = Names;

cout << "Mount point: " << path << endl;

//Определение объема тома и количества свободного места, доступного текущему пользователю if (GetDiskFreeSpaceEx(Names,

&FreeBytesAvailable,

&TotalNumberOfBytes,

nullptr)==0)

cout << "No information.\n" << endl;

else {

cout << "Total Number Of Bytes: " << TotalNumberOfBytes.QuadPart << endl; cout << "Free Bytes Available: " << FreeBytesAvailable.QuadPart << "\n" << endl;

}

} while (FindNextVolume(search, buffer, MAX_BUFFER_SIZE)); if (GetLastError() != ERROR_NO_MORE_FILES)

cout << "Error. Error code: " << GetLastError() << endl; FindVolumeClose(search);

//Определение списка программ, запускаемых при старте системы, из реестра Windows cout << "Run programs:" << endl;

HKEY hKey = HKEY_CURRENT_USER;

LPCTSTR lpSubKey = TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); long OpenK = RegOpenKeyEx(hKey, lpSubKey, 0, KEY_READ, &hKey);

DWORD i = 0;

TCHAR achValue[MAX_VALUE_NAME]; DWORD cchValue;

if (OpenK == ERROR_SUCCESS) { for (;;) {

cchValue = MAX_VALUE_NAME;

if (RegEnumValue(hKey, i, achValue, &cchValue, nullptr, nullptr, nullptr, nullptr) == ERROR_SUCCESS)

{

cout << achValue << endl; i++;

}else { break;

}

}

} else {

cout << "Error" << endl;

}

RegCloseKey(hKey);

//Замер рабочей частоты

QueryPerformanceFrequency(&li); LONGLONG f = li.QuadPart;

cout << "\nfrequency: " << f << " takt/sec" << endl;

//Подсчет количества тактов, которое занимает выполнение программой пункта 1 cout << "delta_t: " << 1000000 * (t2 - t1) / f << " microsec" << endl;

return 0;

}

2

Соседние файлы в папке Windows лаб 1-4