REGISTRAR OCX

RICOCARDOZO 18/07/2013 13:40:49
#426253
Pois achei meio estranho,
Quando se copia uma ocx para a pasta de sistema no windows 7 tudo bem , tem que ter permissão de administrador , agora estou tentando registrar no diretorio do exe ele tinha que rodar direto , eu acho.

Tinha que arrumar uma maneira de passar direto pelo uac , dai só faria uma mudança basica , copiaria as ocx para a pasta do system32 e registrava lá.


EPISCOPAL 18/07/2013 16:55:24
#426265
RicoCardozo .... eu sou igual a você ..... sempre tentando achar um jeito ...

Só que isso requer muita pesquisa e leva tempo ou perca de tempo.

Se os nossos sistemas operacionais só fosse o XP tudo bem, mas se tratando de 7 ou 8 ai a coisa complica ... e vale a opnião dos colegas que postaram aqui ... como o inno, permissão de admistrador etc

Seria interessante mesmo o EXE fazer tudo ... seria legal mesmo.

Voce vai ter que pesquisar se tem como driblar o uac, registrar componentes como adinistrador .... se der certo posta ai ...
THIAGO.CC 18/07/2013 17:23:40
#426266
Ricardo,

Eu tenho alguns sistemas que também fazem os registros em OCX[ô]s, qual o caminho que eu segui para resolver o problema e funciona perfeitamente.

Se for algo comercial que é enviado para o cliente, no seu banco de dados crie uma tabela chamado [Ô]Registro[Ô] pode ser uma string ai fica ao seu critério.

Segue um exemplo do codigo:


Citação:

Declare Function GetSystemDirectory Lib [Ô]kernel32[Ô] Alias [Ô]GetSystemDirectoryA[Ô] (ByVal lpBuffer As String, ByVal nSize As Long) As Long

sub main()

Dim tableConfiguracao As New ADODB.Recordset

tableConfiguracao.Open [Ô]Select * from Registro[Ô], banco, adOpenDynamic, adLockOptimistic
If tableConfiguracao!registro = [Ô]Não[Ô] Then
If GetVersion32 = [Ô]95/98[Ô] Then
a = Chr(34) & SystemDir & [Ô]regsvr32.exe[Ô] & Chr(34) & [Ô] [Ô] & Chr(34) & App.Path & [Ô]\3DChartM.ocx[Ô] & Chr(34)
Shell a
MsgBox [Ô]Welcome[Ô], vbInformation
Else Then
a = Chr(34) & SystemDir & [Ô]regsvr32.exe[Ô] & Chr(34) & [Ô] [Ô] & Chr(34) & App.Path & [Ô]\3DChartM.ocx[Ô] & Chr(34)
Shell a
a = Chr(34) & SystemDir & [Ô]regsvr32.exe[Ô] & Chr(34) & [Ô] [Ô] & Chr(34) & App.Path & [Ô]\3DChartMU.ocx[Ô] & Chr(34)
Shell a
MsgBox [Ô]Welcome[Ô], vbInformation
End If
tableConfiguracao!registro = [Ô]Sim[Ô]
tableConfiguracao.Update
End If
tableConfiguracao.Close

End Sub

Function SystemDir() As String
[ô] determina o atual diretorio system => windows\system
[ô] Examplo - Mydir2 = SystemDir
Dim x As Long
Dim strPath As String
strPath = Space$(1024)
x = GetSystemDirectory(strPath, Len(strPath))
strPath = Left$(strPath, x)
If Right$(strPath, 1) <> [Ô]\[Ô] Then strPath = strPath & [Ô]\[Ô]
SystemDir = strPath
End Function

Public Function GetVersion32() As String
[ô] Os valores retornados sao [Ô]95[Ô] or [Ô]NT[Ô] or [Ô]Desconhecido[Ô]
[ô] Examplo - MyString = GetVersion32
[ô]
OsVers.dwVersionInfoSize = 148&
GetVersionEx OsVers
If OsVers.dwPlatform = 1& Then
GetVersion32 = [Ô]95/98[Ô]
ElseIf OsVers.dwPlatform = 2& Then
GetVersion32 = [Ô]NT[Ô]
Else
GetVersion32 = [Ô]Desconhecido[Ô]
End If
End Function



OCELOT 18/07/2013 22:12:20
#426274
Para contribuir aqui, apesar de no geral ser melhor fazer um instalador, existe no codeproject um programa capaz de registrar componentes COM apenas para u usuário atual, registrando ela no HKEY_CURRENT_USER em vez de no HKEY_LOCAL_MACHINE

A grande vantagem disso é que não precisa de permissão de administrador desta forma, eu nunca testei, mas pode funcionar para o que você quer, segue o link

http://www.codeproject.com/Articles/3505/RegSvrEx-An-Enchanced-COM-Server-Registration-Util
RICOCARDOZO 19/07/2013 09:37:02
#426283
Cara veja que estranho ,
Eu percebi que tem algo relacionado com o office 2007 , que é o que está instalado nas maquinas do escritório.
De alguma forma ao tentar registrar a ocx nos micros com o windows 7 e o office 2007 ele abre a tela do installer e a tela do office 2007.

Vi que na minha aplicação tinha a MSCOMCTL.OCX mais atualizada que dos micros dai fiz o seguinte:

Apaguei a MSCOMCTL.OCX do system32 no windows 7 e executei o meu exe , continua a aparecer as telas de configuração do office , e quando volto lá no diretorio do system32 esta lá a MSCOMCTL.OCX antiga e não a do meu sistema.

A que está no computador é a versão : Ver 6.1.95.45
A que esta no meu executavel é a : ver 6.1.97.86

O que me parece é que ao executar o Shell ([Ô]regsvr32.exe mscomctl.ocx /s[Ô]) ele atualiza o office e mantem a ocx do office.
Página 2 de 2 [16 registro(s)]
Tópico encerrado , respostas não são mais permitidas