Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1710
  • Last Modified:

How to run regsvr32 as Administrator on Windows 7

I have the following line of code in a small vb6 app that works great on XP.  On Windows 7, the regsvr32 will not work unless permissions are elevated to an Administrator.  Is there any way in code to elevate to administrator and then run my code?  Please give specific example.  And I don't want my end users to have to launch the exe any special way other than double-clicking it. I am not opposed to hardcoding an administrator user name and password in the vb6 code.
Here's what works in XP

VBRegSvr32 ("c:\Netmanagerdd\MyFile.dll")
0
BradleyCleveland
Asked:
BradleyCleveland
  • 3
  • 2
  • 2
  • +1
1 Solution
 
Dymer2Commented:
Hi
I've not tried this for regsvr32 but I hope it helps.
I use the code for checking remote registry settings.
Good Luck!
/Dymer2

Private Declare Function LogonUser Lib "advapi32.dll" Alias _
"LogonUserA" _
(ByVal lpszUsername As String, _
ByVal lpszDomain As String, _
ByVal lpszPassword As String, _
ByVal dwLogonType As Long, _
ByVal dwLogonProvider As Long, _
phToken As Long) As Long

Private Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" ( _
    ByVal hToken As Long) As Long
    
Private Declare Function RevertToSelf Lib "advapi32.dll" () As Long


Private Const LOGON32_LOGON_INTERACTIVE As Long = 9
Private Const LOGON32_LOGON_NETWORK As Long = 3
Private Const LOGON32_PROVIDER_DEFAULT As Long = 0
Private Const LOGON32_PROVIDER_WINNT50 As Long = 3
Private Const LOGON32_PROVIDER_WINNT40 As Long = 2
Private Const LOGON32_PROVIDER_WINNT35 As Long = 1

Public Function Logon _
    (ByVal strAdminUser As String, _
     ByVal strAdminPassword As String, _
     ByVal strAdminDomain As String)
     
     Dim lngTokenHandle, lngLogonType, lngLogonProvider As Long
     Dim blnResult As Boolean
     
     lngLogonType = LOGON32_LOGON_INTERACTIVE
     lngLogonProvider = LOGON32_PROVIDER_DEFAULT
     
     blnResult = RevertToSelf
     
     blnResult = LogonUser( _
        strAdminUser, _
        strAdminDomain, _
        strAdminPassword, _
        lngLogonType, _
        lngLogonProvider, _
        lngTokenHandle)
        
     Logon = ImpersonateLoggedOnUser(lngTokenHandle)
End Function
Public Sub Logoff()
   Dim blnResult As Boolean
   blnResult = RevertToSelf()
End Sub

Open in new window

0
 
Dymer2Commented:
Hi again,
Or, you can wrap everything within a autoit script.
Here's an example of an Autoit 3 script.
/Dymer2

#include <process.au3>
#include <GUIConstants.au3> ; GUI

; Are we already admin?
If Not IsAdmin() Then
	RunAs('administrator', 'HQdomain', 'secretpassword',0,@AutoItExe,@WorkingDir)
    Exit

Else
$Width = 300
$Height = 140
GUICreate("Construction Service", $Width, $Height)
$editbox = GUICtrlCreateEdit("Registreraren laddad."& @CRLF,10,10,280,120)

GUISetState ()

GUICtrlSetData ($editbox, "Copy file to computer...",1)
	FileCopy (@ScriptDir & "\FuncList.dll" , @SystemDir)
	FileCopy (@ScriptDir & "\Construction.ini" , @AppDataDir)
If  FileExists (@SystemDir & "\FuncList.dll") Then
	GUICtrlSetData ($editbox, "...done, registering dll-file." & @CRLF,1)
	RunWait('regsvr32 /s  ' & '"' & @SystemDir & '\FuncList.dll"')
	GUICtrlSetData ($editbox, "Registering done." & @CRLF,1)
	$endmsg = "All done. You can now run the application."
Else
	GUICtrlSetData ($editbox, "Error while installing." & @CRLF,1)
	$endmsg = "Error while installing."

Sleep(300)

endif
EndIf

msgbox(0,"Information",$endmsg)

Open in new window

0
 
grayeCommented:
Most folks attempt to move those kinds of activities to the Install routine (that obvioulsy happens only once), rather than the application itself.  It's kinda normal to have an administrator perform the install of a new piece of software, so that part is pretty much taken care of.   Now, all you'd need to do is perform a custom step in your installer that registers the DLL.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
BradleyClevelandAuthor Commented:
Some other issues have taken priorty and I haven't had a chance to test this solution. Was actually hoping for something simpler, but will try to test it this weekend.  I had to submit this response so that the EE account would unlock
0
 
OP_ZaharinCommented:
hi bradley,
- you can create a shortcut for your application. right-click and select 'Properties' of the shortcut. under 'Shortcut' tabs, click the 'Advanced' button. you'll find a checkbox that tells it to always 'Run as administrator'.
- so made the shortcut available to your user, not the .exe file.

0
 
OP_ZaharinCommented:
- maybe you can also look into Manifest to make your exe file run as Administrator:
http://msdn.microsoft.com/en-us/library/bb756929.aspx
http://www.bigresource.com/Tracker/Track-vb-bQQLOflX7x/ (scroll down to Jemand solutions)
0
 
BradleyClevelandAuthor Commented:
I must have hit something wrong by mistake. My intent was to accept  Op Zaharin's response of creating a shortcut (or right-mouse clicking on the exe) to select the option of "Run as Administrator"
0
 
OP_ZaharinCommented:
hi bradley, thank you and glad it works for you :)
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 3
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now