Search  
Wednesday, May 23, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Visual FoxPro in general  INREGISTRARE CO...
 INREGISTRARE COMPONENTE IN WINDOWS 7
 
 10/8/2011 8:46:24 PM
User is offlineSCHRECK
156 posts
5th


INREGISTRARE COMPONENTE IN WINDOWS 7
 (N/A)
Dupa cum se stie pt.a inregistra un Dll sau un Active x (.ocx) se foloseste
comanda regsvr32. Acesta functioneaza foarte bine in xp insa in Windows 7 apare mesajul

The module "fisier.ocx " was loaded but the call
to DllRegisterServer failed with error code 0x8002801c

Acesta se datoreza faptului ca UAC-ul este activat. Mai intai trebuie dezactivat UAC-ul
dupa care se poate da comanda regsvr32

Dezactivarea UAC-ului se realizea in mai multe feluri
- Contol Panel..User Accounts...Change Accounts Control Settings
- Modificand valoarea registry "EnableLUA" in 0 din
HKEY_LOCAL_MACHINE/SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

Cand faci un chit de distributie dupa parerea mea nu poti spune clientului 'Vezi inainte dezactiveaza UAc-ul'
Acest lucru este datoria chitului de distributie, adica trebuie sa existe o rutina care sa faca urmatoarele:
- sa citeasca si sa memoreze valoarea cuvantului EnableLUA si ConsentPromptBehaviorAdmin care este respunzator
de pozitia 'sliderului' (ex. pt 5 se afla la mijloc)

- sa puna 0 pt. ambele cuvinte (sa dezactiveze UAC-ul)
- sa inregistreze componentele
- sa readuca UAC-ul la starea initiala

Rutina de mai jos face acest lucru dar apare o problema
Daca UAC-ul este dezactivat punand nValueToWrite =1 respectiv 5
rutina activeaza fara probleme UAC-ul
In scimb daca UAC-ul este activat sistemul nu permite modificarea registry nValueToWrite =0

apare "Modificarea Registry a esuat" lucru logic ca doar asta este menirea UAC-ului

Am compilat rutina de mai jos in dezactiveazauac.exe
Daca il lanzez cu Run as administrator functioneaza dazactiveaza uac-ul.

Problema care nu stiu sa fac si cer ajutor cum asi putea face prin program ca aceasta rutina care face
parte dintr-un ansamblu de rutine di chitul de distributie sa ruleze ca 'Run as administrator' ?

Presupunem ca din rutina lansez dezactiveazauac.exe cu shellexecute cum ar trebui sa
scriu sa ruleze ca 'Run as administrator' ?

Mentionez ca nu vrea sa fac nici o setare manuala.



*********************************************************************
#DEFINE HKEY_LOCAL_MACHINE -2147483646

LOCAL nKey, cSubKey, cValue, nValueToWrite, lSuccess
nKey = HKEY_LOCAL_MACHINE
*nValueToWrite =1
cSubKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"

cValue = "EnableLUA"
nValueToWrite =0

lSuccess = WriteRegDWORD(nKey, cSubKey, cValue, nValueToWrite)

cValue = "ConsentPromptBehaviorAdmin"
nValueToWrite =0

lSuccess = WriteRegDWORD(nKey, cSubKey, cValue, nValueToWrite)

IF (lSuccess)
=MESSAGEBOX("Modificarea Registry s-a realizat cu succes")
ELSE
=MESSAGEBOX("Modificarea Registry a esuat")
ENDIF

*RESTART WINDOWS
IF lSuccess
restart = createobject("Shell.Application")
restart.ShutdownWindows()
ENDIF


***

FUNCTION WriteRegDWORD
* Aceasta functie scrie un REG_DWORD in registry. Va returna .t. daca s-a reusit si .F. daca nu
PARAMETERS nKey, cSubKey, cValue, nValueToWrite


* Constant necesara functiei RegSetValueEx
#DEFINE REG_DWORD 4

* WIN 32 API functii folosite
DECLARE Integer RegOpenKey IN Win32API ;
Integer nHKey, String @cSubKey, Integer @nResult
DECLARE Integer RegSetValueEx IN Win32API ;
Integer hKey, String lpszValueName, Integer dwReserved,;
Integer fdwType, String lpbData, Integer cbData
DECLARE Integer RegCloseKey IN Win32API Integer nHKey

* Variabile locale folosite
LOCAL nErrCode && Cod eroare returnata de functia RegOpenKey
LOCAL nKeyHandle && Handle care atribuie regopenkey
LOCAL lpbValue && Valoarea ce urmeaza a fi scrisa


nKeyHandle = 0
lpdwReserved = 0

lpbValue = LongToStr(nValueToWrite)

nErrCode = RegOpenKey(nKey, cSubKey, @nKeyHandle)

IF (nErrCode # 0) THEN
RETURN .F.
ENDIF

nErrCode=RegSetValueEx(nKeyHandle, cValue,0, REG_DWORD, lpbValue, 4)

=RegCloseKey(nKeyHandle)
IF (nErrCode # 0) THEN
RETURN .F.
ENDIF
RETURN .T.

FUNCTION LongToStr
* Aceasta functie converteste long in string
PARAMETERS nLongVal
LOCAL nLoopVar, strReturn

strReturn = ""
FOR nLoopVar = 24 TO 0 STEP -8
strReturn = CHR(INT(nLongVal/(2^nLoopVar))) + strReturn
ENDFOR
RETURN strReturn





 10/9/2011 3:02:20 PM
User is offlineneagu_laurentiu
101 posts
5th


Re: INREGISTRARE COMPONENTE IN WINDOWS 7
 (N/A)
Folosesti Inno Setup (e gratis) cu optiunea PrivilegesRequired si nu-ti mai bati capul...
 10/10/2011 10:22:00 PM
User is offlineSCHRECK
156 posts
5th


Re: INREGISTRARE COMPONENTE IN WINDOWS 7
 (N/A)
Multumesc pt. raspuns inca n-am folosit Inno Setup dar am sa incerc daca nu exista alta solutie
 10/11/2011 12:04:12 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: INREGISTRARE COMPONENTE IN WINDOWS 7
 (N/A)
Arunca un ochi si aici:

http://www.sweetpotatosoftware.com/spsblog/2009/08/03/ApplyApplicationManifestAtCompileTimeWithProjecthook.aspx

In esenta, clasa aia introduce la compilare un manifest in executabil, si asta informeaza sistemul de operare ca aplicatia necesita drepturi de administrator.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/27/2011 11:35:35 PM
User is offlineSCHRECK
156 posts
5th


Re: INREGISTRARE COMPONENTE IN WINDOWS 7
 (N/A)
Am reusit sa inregistrez componente ocx, dll in vista, windows 7 folosind aplicatia Install Creator (gratuit)
Noua versiune dispune de un comutator Vista/7:run as administrator, exact de ceea-ce aveam nevoie.
Bifand acest comutator se pot inregistra direct dll, ocx chiar cu UAC-ul activat. inafara de acesta in timpul intalarii
se pot lansa in executie diferite executabile (eu am lansat un executabil care continea comanda run foxhhelp.exe \regserver rezolvand
in acest fel si HELP-ul F1.
Stiu ca si alte aplicatii fac acest lucru dar Install Creator este foarte usor de folosit 'nu trebuie programat' se folosesc doar cateva macrouri
care sunt bine documentate si are alte multe optiuni (citire/scriere Registry etc). Merita incercat
 4/10/2012 11:58:44 PM
User is offlineemyemy
1 posts


Re: INREGISTRARE COMPONENTE IN WINDOWS 7
 (N/A)
Ai putea sa folosesti team viewer ca sa faci aceleasi setari si la mine? Eu nu prea stiu cum se foloseste programul si nu sunt un informatician prea bun...
 5/3/2012 10:23:19 AM
User is offlineSCHRECK
156 posts
5th


Re: INREGISTRARE COMPONENTE IN WINDOWS 7
 (N/A)
 emyemy wrote
Ai putea sa folosesti team viewer ca sa faci aceleasi setari si la mine? Eu nu prea stiu cum se foloseste programul si nu sunt un informatician prea bun...


Scuze pt.intarziere dar la ce setari de referi si la ce program?
  Visual FoxPro  Visual FoxPro in general  INREGISTRARE CO...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement