0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 14
1

Работа с реестром через функции WinAPI

09.11.2012, 00:59. Показов 2429. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#pragma once
#include <Windows.h>
#include "stdafx.h"
 
namespace WindowsFormsApplication1 {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace Microsoft::Win32;
 
    /// <summary>
    /// Сводка для Form1
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    protected: 
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(69, 82);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"button1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 261);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
 
        }
#pragma endregion
    public: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                HKEY hKey;
                wchar_t pth[] = L"\\txt";
                RegOpenKeyEx(HKEY_CLASSES_ROOT, pth, 0, KEY_READ, &hKey );
             }
    };
}
При компиляции выдает ошибку:
Кликните здесь для просмотра всего текста
1>WindowsFormsApplication1.obj : error LNK2028: ёё√ыър эр эхЁрчЁх°хээє■ ыхъёхьє (0A00000F) "extern "C" long __stdcall RegOpenKeyExW(struct HKEY__ *,wchar_t const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExW@@$$J220YGJPAUHKEY__@@PB_WKKPAPAU1@@Z) т ЇєэъЎшш "public: void __clrcall WindowsFormsApplication1::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@WindowsFormsApplication1@@$$FQ$AAMXP$AAVObject@System@@P$A AVEventArgs@4@@Z)
1>WindowsFormsApplication1.obj : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы "extern "C" long __stdcall RegOpenKeyExW(struct HKEY__ *,wchar_t const *,unsigned long,unsigned long,struct HKEY__ * *)" (?RegOpenKeyExW@@$$J220YGJPAUHKEY__@@PB_WKKPAPAU1@@Z) т ЇєэъЎшш "public: void __clrcall WindowsFormsApplication1::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@WindowsFormsApplication1@@$$FQ$AAMXP$AAVObject@System@@P$A AVEventArgs@4@@Z)
1>C:\Users\Artem\Desktop\┬═╥╙\╧ЁръЄшўэ│\╬╤\╧╨3\WindowsFormsApplication1\Debug\Wi ndowsFormsApplication1.exe : fatal error LNK1120: эхЁрчЁх°хээ√ї тэх°эшї ¤ыхьхэЄют: 2

Что это такое? Жесть какая-то...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2012, 00:59
Ответы с готовыми решениями:

Работа с реестром программы
Посоветуйте пожалуйста где можно скачать нормальный самоучитель,где есть описана робота с реестром...

Работа с реестром. Считывание данных
В общем стоит передо мной цель считать данные с реестра с раздела Но в этом разделе не показывает...

Работа с реестром через winapi
как перевести r.RootKey:=HKEY_LOCAL_MACHINE;...

Работа с реестром средствами WinAPI
Всем привет! Помогите пожалуйста с решением задачки. Нужно сделать добавление в раздел реестра...

5
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
09.11.2012, 10:40 2
Смешиваешь управляемый и натив, из-за этого может?
0
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 14
10.11.2012, 15:37  [ТС] 3
Цитата Сообщение от Deviaphan Посмотреть сообщение
Смешиваешь управляемый и натив, из-за этого может?
Можете подробнее объяснить?
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
11.11.2012, 09:22 4
RegOpenKeyEx это функция WinApi. Неуправлямая. Сомневаюсь, что на managed-отстое нужно использовать именно эту функцию - она слишком низкоуровневая, для столь высокоуровневых программистов.
0
0 / 0 / 0
Регистрация: 12.06.2010
Сообщений: 14
12.11.2012, 21:22  [ТС] 5
Мне просто нужно научится использовать ф-ии WinAPI для работы с реестром.

Не могу понять, почему этот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <conio.h>
#include <winreg.h>
 
using namespace System;
using namespace std;
using namespace Microsoft::Win32;
 
int main ()
{
    char myval[] = "were";
    HKEY hknew;
    DWORD res;
    RegCreateKeyEx (HKEY_CURRENT_USER, L"SOFTWARE\\myapp", 0, NULL, 0, 0, NULL, &hknew,&res);
    RegOpenKeyEx (HKEY_CURRENT_USER, L"SOFTWARE\\myapp", 0, KEY_WRITE, &hknew); 
    RegSetValueEx (hknew, L"myval", 0, REG_SZ, (LPBYTE) myval, sizeof (myval));
    RegCloseKey (hknew);
    return 0;
}
Записывает это:
Работа с реестром через функции WinAPI

А не "were".
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.11.2012, 06:24 6
Потому что were имеет тип char, а записываешь его ты как wchar_t.
Соответственно, we превращается в первый иероглиф, re - во второй.
1
13.11.2012, 06:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2012, 06:24
Помогаю со студенческими работами здесь

не работает WINAPI для работы с реестром
Запускается, но при вводе ключа ,прыгает на return -1 , будто не находит нужные параметры ,хотя...

Работа с файлами через WinApi
Доброго времени суток. Есть программа которая которая с помощью api должна прочитать текстовый...

Работа с директорями через WinApi
запрашивается имя каталога у пользователя.Составить .txt файл, описывающий структуру этого...

Работа с приложением через WinAPI
Пытаясь разобраться в проблемах программы, по средствам которой я пытаюсь учить OpenGL, наткнулся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru