Estou com o seguinte problema. Tenho a necessidade de registrar DLL/OCX pelo VB6. No caso, seria um executável para atualizar as DLL/OCX do sistema e é necessário desregistrar as DLL/OCX (Antigas) e registrar novas DLL/OCX nas máquinas dos usuários.
Estou fazendo teste com a função ShellExecute e utilizando "runas" para executar como administrador.
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
' variáveis de controle de erros.
Private Const ERROR_FILE_NOT_FOUND = 2&
Private Const ERROR_PATH_NOT_FOUND = 3&
Private Const ERROR_BAD_FORMAT = 11&
Private Const SE_ERR_ACCESSDENIED = 5
Private Const SE_ERR_ASSOCINCOMPLETE = 27
Private Const SE_ERR_DDEBUSY = 30
Private Const SE_ERR_DDEFAIL = 29
Private Const SE_ERR_DDETIMEOUT = 28
Private Const SE_ERR_DLLNOTFOUND = 32
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_OOM = 8
Private Const SE_ERR_SHARE = 26
Private Sub Command1_Click()
Dim lngAux As Long
lngAux = ShellExecute( _
Me.hwnd, "runas", _
"C:\WINDOWS\system32\regsvr32.exe", "/u C:\EXTributacaoIPI.dll", _
"C:\", 0)
If lngAux <= 32 Then
Select Case lngAux
Case 0
MsgBox "Out of memory or resources", vbOKOnly Or vbExclamation, "Error"
Case ERROR_FILE_NOT_FOUND
MsgBox "File not found", vbOKOnly Or vbExclamation, "Error"
Case ERROR_PATH_NOT_FOUND
MsgBox "Path not found", vbOKOnly Or vbExclamation, "Error"
Case ERROR_BAD_FORMAT
MsgBox "Invalid .EXE file", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_ACCESSDENIED ' access denied
MsgBox "File access denied", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_ASSOCINCOMPLETE
MsgBox "Invalid file name association", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_DDEBUSY
MsgBox "DDE busy", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_DDEFAIL
MsgBox "DDE transaction failed", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_DDETIMEOUT
MsgBox "DDE timeout", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_DLLNOTFOUND
MsgBox "DLL not found", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_NOASSOC
MsgBox "No associated application", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_OOM ' out of memory
MsgBox "Out of memory", vbOKOnly Or vbExclamation, "Error"
Case SE_ERR_SHARE
MsgBox "Sharing violation", vbOKOnly Or vbExclamation, "Error"
Case Else
MsgBox "Unknown error " & lngAux, vbOKOnly Or vbExclamation, "Error"
End Select
End If
End Sub
Ao executar o código acima é exibida a tela pedindo a senha de administrador. No caso preciso que não seja solicitado essa senha.
Caso alguém saiba como passar senha de determinado usuário pelo código também ajudaria.
Pergunta
MRMB
Olá pessoal,
Estou com o seguinte problema. Tenho a necessidade de registrar DLL/OCX pelo VB6. No caso, seria um executável para atualizar as DLL/OCX do sistema e é necessário desregistrar as DLL/OCX (Antigas) e registrar novas DLL/OCX nas máquinas dos usuários.
Estou fazendo teste com a função ShellExecute e utilizando "runas" para executar como administrador.
Ao executar o código acima é exibida a tela pedindo a senha de administrador. No caso preciso que não seja solicitado essa senha.
Caso alguém saiba como passar senha de determinado usuário pelo código também ajudaria.
Desde já agradeço atenção!
Editado por CrispimLink para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.