Schimbari in Vista

Acest forum este dedicat intrebarilor de Windows API, folosing C/C++
User avatar
Nemok
Junior
Junior
Posts: 40
Joined: 10 Sep 2007, 05:04
Location: Bacau / Iasi
Contact:

Schimbari in Vista

Post by Nemok » 02 Oct 2007, 19:58

Salut,

Stiti cumva dak s-a schimbat in Vista ceva legat de JournalRecordProc (SetWindowsHooksEx) sau de mesajul VK_CANCEL (CTRL+BREAK)???
Intreb pentru ca am o aplicatie care foloseste JournalRecordProc pentru a inregistra mouse-ul si tastatura, si VK_CANCEL pentru a opri inregistrarea. Ideea e ca in Vista nu pot opri inregistrare folosing CTRL+BREAK pe cand in XP nu am probleme.
Codul care detecteaza este:

Code: Select all

		
                       LPEVENTMSG lpEvent= (LPEVENTMSG)lParam;

		// STOP - user stops recording by pressing CTRL+BREAK
		if(lpEvent->message == WM_KEYDOWN && LOBYTE(lpEvent->paramL) == VK_CANCEL) 
		{
			
			fnStop_Recorder(SI_E_RC_SC_DONE);
			
			return 0;
		}
Sper sa fie doar oschimbare mica in Vista pentru ca altfel inseamna k am probleme mai mari.

Mersi.


keeping things simple...

Motivul pentru care intreb: NKProds.com :)

soso
Junior
Junior
Posts: 36
Joined: 27 Jul 2007, 17:20

Re: Schimbari in Vista

Post by soso » 02 Oct 2007, 21:51

Pai in primul rand vezi daca iti vine WM_KEYDOWN cand apesi Ctrl-Break. Daca vine, vezi cu debugger-ul ce se gaseste in lParam. Poate vine un alt VK.

Soso

User avatar
Nemok
Junior
Junior
Posts: 40
Joined: 10 Sep 2007, 05:04
Location: Bacau / Iasi
Contact:

Re: Schimbari in Vista

Post by Nemok » 02 Oct 2007, 22:56

Am facut ceva debugging si spre rusinea mea nu asta era problema ci faptul k SetWindowHooksEx (g_hHookRecorder= SetWindowsHookEx (WH_JOURNALRECORD, JournalRecorderFunc, AfxGetInstanceHandle(), 0);) nu merge in programul meu pe Vista. Returneaza NULL si seteaza GetLastError 5 (adik access denied). Am incercat Run as Administrator fara vreo imbunatatire.
Care ar putea fi problema aici?
keeping things simple...

Motivul pentru care intreb: NKProds.com :)

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Schimbari in Vista

Post by Marius Bancila » 02 Oct 2007, 23:55

Nu stiu in ce masura te ajuta, dar:
MSDN wrote: In Windows Vista, User Interface Privilege Isolation (UIPI) is enabled by default. As a result of this security feature, a process in a lower integrity level cannot communicate with a higher integrity level process using Windows Messaging (SendMessage). This means that applications running under standard user level cannot communicate with other applications running with an elevated administrative level. This also means that applications installing keyboard or mouse hooks will now need to change to use manifests and request elevation.
De asemenea uita-te peste articolul asta: http://msdn.microsoft.com/windowsvista/ ... tVista.asp.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Schimbari in Vista

Post by Marius Bancila » 03 Oct 2007, 22:14

Ce-am uitat sa subliniez ieri din articolul ala (msdn2.microsoft.com/en-us/library/aa905330.aspx):
MSDN wrote: A lower privilege process cannot:
  • Perform a window handle validation of higher process privilege.
  • SendMessage or PostMessage to higher privilege application windows. These Application Programming Interfaces (APIs) return success but silently drop the window message.
  • Use thread hooks to attach to a higher privilege process.
  • Use Journal hooks to monitor a higher privilege process.
  • Perform DLL injection to a higher privilege process.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Nemok
Junior
Junior
Posts: 40
Joined: 10 Sep 2007, 05:04
Location: Bacau / Iasi
Contact:

Re: Schimbari in Vista

Post by Nemok » 04 Oct 2007, 18:31

Interesant, dar din moment ce rulez aplicatia ca Administrator in Vista de ce mai sunt probleme? Adik exista privilegii mai mari decat cele de Admin?
keeping things simple...

Motivul pentru care intreb: NKProds.com :)

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Schimbari in Vista

Post by Marius Bancila » 04 Oct 2007, 22:03

Da, exista. Exista un proces care ruleaza cu privilegii mai mari. Cand lansazi un program iti apare fereastra aia care te intreaba Cancel sau Continue, chiar daca rulezi ca admin. Doar cu mouse-ul sau tastatura o poti inchide. Nici un proces nu-i poate trimite mesaje pt. ca ruleaza cu cele mai mari privilegii din sistem (pe care nici un proces utilizator nu le poate obtine). Daca n-ar fi asa toata securitatea Vista s-ar reduce la cea din XP.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Nemok
Junior
Junior
Posts: 40
Joined: 10 Sep 2007, 05:04
Location: Bacau / Iasi
Contact:

Re: Schimbari in Vista

Post by Nemok » 07 Oct 2007, 17:58

Intradevar problema e cauzata de privileggile applicatiilor (UAC).
Solutia am gasit-o aici: http://forums.microsoft.com/MSDN/ShowPo ... 1&SiteID=1
Problema este ca pentru a merge aplicatia trebuie sa aiba cele mai mari privilegii (de Administrator, cu toate astea, Run as Administrator nu merge) si pentru assta, aplicatia trebui sa fie semnata digital ceea ce implica folosirea unui certificat ce trebuie platit anual de la o firma precum Comodo sau Verisign.
Nu e ceea mai buna solutie considerand costurile implicate, motiv pentru care nu sunt de acord cu aceasta schimbare in Vista.

Stiti cumva cum as putea reproduce functionalitatea oferita de WH_JOURNALRECORD folosing alte functii de inregistrare a mouse-ului si a tastaturii, cu care sa pot sa salvez aceaste informatii si apoi sa le redau, reproducand astfel actiunile inregistrate? eventual o solutie ce nu necesita achizitionarea unui certifcat?

Mersi.
keeping things simple...

Motivul pentru care intreb: NKProds.com :)

ylvall
Junior
Junior
Posts: 1
Joined: 28 Aug 2007, 17:02

Re: Schimbari in Vista

Post by ylvall » 27 Oct 2007, 15:47

De fapt trebuie sa rulezi procesul tau in mod elevat, daca ai UAC activat.
http://studentclub.ro/the_yellow_path/a ... rului.aspx
Vezi in partea de jos la manifest.
Practic tu trebuie sa ii spui Windowsului (Vista) ca aplicatia are nevoie de elevare. Toate conturile (inclusiv Admin) au drepturile limitate de UAC (daca este activat), si trebuie sa se ceara permisiunea userului.

User avatar
Nemok
Junior
Junior
Posts: 40
Joined: 10 Sep 2007, 05:04
Location: Bacau / Iasi
Contact:

Re: Schimbari in Vista

Post by Nemok » 13 Nov 2007, 23:39

Nu merge treaba cu manifestul. Pt a folosi SetWindowsHooks cu trebuie sa ai privelegii mai mari decat cele de admin, adica sa ai un certificat pt aplicatie, sa fie semnata digital. (http://forums.microsoft.com/MSDN/ShowPo ... 1&SiteID=1)
keeping things simple...

Motivul pentru care intreb: NKProds.com :)

User avatar
Nemok
Junior
Junior
Posts: 40
Joined: 10 Sep 2007, 05:04
Location: Bacau / Iasi
Contact:

Re: Schimbari in Vista

Post by Nemok » 14 Nov 2007, 17:07

M-am interesat de certificate digitale. Un astfel de certificat de la Comodo ma costa 179$ pe an, asta doar ca sa permit o functionalitate intr-un produs la care lucrez acum si problema e ca nu stiu daca merita.
Alternativa ar fi ca in momentul in care este folosita aceasta functie de inregistrare a mouse-ului si a tastaturii sa cer utilizatorului sa dezactiveze UACul (banuiesc ca nu poate fi dezactivat de applicatia mea).

Am nevoie de un sfat. Aplicatia in cauza este lansata in versiunea BETA (poate fi downloadata de pe http://www.nkprods.com/nmacro/nmacro2.htm) si planuiesc sa o lansez comercial pe undeva pe la 29$ bucata.

Tinand cont de aplicatie care credeti ca ar fi cea mai buna solutie. Apropo orice feedback legat de aplicatia in sine e binevenit.

Mersi.
keeping things simple...

Motivul pentru care intreb: NKProds.com :)

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Schimbari in Vista

Post by Marius Bancila » 14 Nov 2007, 17:25

Pai de exemplu daca aplicatia ta va fi folosita intr-o firma, unde useri nu au drept de admin, mai mult ca sigur ca n-ai nici o sansa sa dezactiveze UAC-ul.

179$ pe an nu e o cifra exagerata. Depinde si de cat vinzi. Presupun ca ti-ai facut un target. Daca asta implica 20 licente pe an, cred ca te-ai chinuit degeaba. Daca e vorba de sume mai mari, nu cred ca 179 e un impediment.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

soso
Junior
Junior
Posts: 36
Joined: 27 Jul 2007, 17:20

Re: Schimbari in Vista

Post by soso » 15 Nov 2007, 23:06

Daca nu cumperi acel certificat (179USD nu mi se pare o suma exorbitanta) ai toate sansele ca aplicatia ta sa esueze din start. Userii vor downloada aplicatia sa o evalueze si daca nu le va functiona din start, marea majoritate vor renunta sa sape dupa problema. Sa le ceri sa dezactiveze UAC-ul e o chestie nerealista.

Soso

User avatar
Nemok
Junior
Junior
Posts: 40
Joined: 10 Sep 2007, 05:04
Location: Bacau / Iasi
Contact:

Re: Schimbari in Vista

Post by Nemok » 22 Nov 2007, 02:38

M-am interesat putin si am aflat un lucru foarte interesant si in acelasi timp stupid care face imposibila lansarea programului meu pe Vista.
Ideea e ca pt a putea trimite input catre alte ferestre trebuie ca manifestul aplicatie sa contina uiAccess=true, fisierul trebuie sa fie semnat digital si trebuie sa se afle ori in Program Files ori in Windows\System32.
Problema e ca in applicatia mea, fisierele create, cele care reproduc inregistrarile sunt defapt un executabil la care mai adaug niste informatie in spate. Deci partea cu semnarea digitala pica pt k fisierul fiind modificat nu va mai porni. Apoi mai e si faza cu locatia in Program Files sau System32. Sa oblig utilizatorii sa copie fisierele create in unul din aceste directoare e prea mult.

Pe langa asta programul mai are cateva functii care permit manipularea sau trimiterea de comenzi catre alte ferestre. Deci din prima pe Vista cad si astea, pt k ar nu vreau k programele create sa ceara drepturi de admin.

Sunt foarte dezmagit de Vista din pct asta de vedere. Mi se par niste reguli foarte stricte cu foarte putin folos real care restrictioneaza dezvoltatorii.
keeping things simple...

Motivul pentru care intreb: NKProds.com :)

soso
Junior
Junior
Posts: 36
Joined: 27 Jul 2007, 17:20

Re: Schimbari in Vista

Post by soso » 22 Nov 2007, 16:47

Nemok wrote:Problema e ca in applicatia mea, fisierele create, cele care reproduc inregistrarile sunt defapt un executabil la care mai adaug niste informatie in spate. Deci partea cu semnarea digitala pica pt k fisierul fiind modificat nu va mai porni.
Nu poti sa faci redesign la aplicatie, fisierele create sa fie niste fisiere simple, iar aplicatia ta (semnata) sa le ruleze?

Soso

Post Reply