CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Windowsowa 64bitowa Paranoja

Windowsowa 64bitowa Paranoja

dział ogólny

Windowsowa 64bitowa Paranoja

Nowy postprzez Corvis » piątek, 18 listopada 2011, 10:48

Witam,

Oto kod który działa w XP, VISTA 32 bitowych:

KOD cpp:     UKRYJ  
String klucz;
std::auto_ptr<TRegistry>Reg(new TRegistry());
Reg->RootKey = HKEY_LOCAL_MACHINE;
if(Reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Cryptography")) {
    klucz = Reg->ReadString("MachineGuid");
}
 

Pod Windows 7 64bitowym kod się wykonuje(Przechodzi warunek IF) ale wartość zmiennej klucz jest pusta.
Wie ktoś może o co tutaj chodzi ?? Przecież to jakaś paranoja jest ;|

Pozdrawiam,
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez polymorphism » piątek, 18 listopada 2011, 12:10

Zapewne chodzi o to, że aplikacja jest 32-bitowa. Jeśli dobrze kojarzę, niektóre próby dostępu do rejestru przez aplikację 32-bitową są przekierowywane (sprawdź HKEY_LOCAL_MACHINE\Software\Wow6432Node\...), zatem nie masz dostępu do tego właściwego klucza w rejestrze.

Generalnie jak masz możliwość wygenerować aplikację 64-bitową, to po prostu zrób to, unikniesz tego typu problemów.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez Corvis » piątek, 18 listopada 2011, 12:32

No właśnie nie mam, dopiero XE3 będzie miało możliwość wygenerować kompilację na 64bitowego windowsa. Delphi XE2 już może to robić. Niestety w Wow6423Node nie ma takiego klucza :|
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez Cyfrowy Baron » piątek, 18 listopada 2011, 14:01

Napisz aplikację w taki sposób, by zależnie od wersji systemu operacyjnego sprawdzała albo klucz 32-bitowy, albo 64-bitowy.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez polymorphism » piątek, 18 listopada 2011, 14:09

Niech użyje funkcji WinAPI z odpowiednią flagą -> link.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Corvis
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez Corvis » piątek, 18 listopada 2011, 18:42

Wow6432Node nie ma MachineGuid
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez polymorphism » piątek, 18 listopada 2011, 18:58

Odnośnie czego to?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez Corvis » piątek, 18 listopada 2011, 19:43

Odnośnie tego co napisałeś o użyciu funkcji WinAPI z flagą. Nie da się tego zrobić bo w rejestrze 64 bitowego windowsa nie można wyczytać MachineGuid który w 32bitowym znajduje się w SOFTWARE\\Microsoft\\Cryptograph. Przynajmniej ja go tam nie znalazłem.
Owszem jak wejdziesz w regedit w windows 64bitowym i wejdziesz w SOFTWARE\\Microsoft\\Cryptograph to znajdziesz tam MachineGUID ale odczytując go otrzymasz pusty string.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384253(v=vs.85).aspx

tutaj jest lista kluczy które można wyczytać.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez polymorphism » piątek, 18 listopada 2011, 19:45

Pokaż kod.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez Corvis » piątek, 2 grudnia 2011, 00:23

Rozwiązanie problemu:

KOD cpp:     UKRYJ  
 Reg->Access = Reg->Access | KEY_WOW64_64KEY;


Przed otwarciem :-)
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez polymorphism » piątek, 2 grudnia 2011, 00:38

18 listopada dostałeś sugestie odnośnie tej flagi ;)
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Windowsowa 64bitowa Paranoja

Nowy postprzez Corvis » piątek, 2 grudnia 2011, 00:39

Tak ale musiałem doczytać jak to zrobić ;)

Dzięki za pomoc
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome


Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 12 gości