[Last Call] Learn how to a build a cloud-first strategyRegister Now

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

C# installer to install software as different user

Hello,

I would like to use C# or C/C++ to write a quick little installer to install a program I have (but did not write) as an administrator.  The program has to be installed as an administrator but I do not want to give out the admin password so I need an installer to install the program as admin even though the installer is getting called by say bob.
0
acameron
Asked:
acameron
  • 5
  • 3
  • 2
1 Solution
 
TonylmillerCommented:
Will Windows let you do that?  I wouldn't think so.  Users are not made administrators for a reason.  I'd be surprised if the software can override the user settings of the operating system.
0
 
_ys_Commented:
As log as you know the username and password of the admin it's quite straightforward really. (C++ code sample provided.)


HANDLE hAdminUserToken = 0;

if ( LogonUser( "Administrator",
                      ".",                            // local machine (could also be domain name)
                      "{password}",
                      LOGON32_LOGON_BATCH,
                      LOGON32_PROVIDER_DEFAULT,
                      &hAdminUserToken ))
{
    if ( ImpersonateLoggedOnUser (hAdminUserToken) )
    {
        // do whatever you need to do as admin here ...
    }

    RevertToSelf ( );
    hAdminUserToken = 0;
}

Under Win 2000 there are however restrictions on who can actually invoke LogonUser successfully. (These restrictions were lifted again within Win XP). The user must have been granted the 'Act as part of the operating system' user right - which in itself is something you generally don't want to enable if you're trying to lock systems down.
0
 
acameronAuthor Commented:
I am getting a whole bunch of undeclared identifiers, what headers do I need to include to test this?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
_ys_Commented:
You should already have those functions protyped. A single #include "windows.h" is sufficient.
0
 
acameronAuthor Commented:
Nevermind, I found it.  Let me test this out and I will be back.
0
 
TonylmillerCommented:
Oh yes, I thought you wanted the ability to do this on any machine where you would not know the admin password.
0
 
acameronAuthor Commented:
Ok, does not appear to be entering the if to assign user and then execute...
0
 
acameronAuthor Commented:
Found the problem I overlooked the Win2k issue.  I am running Win2k pro. any ideas?
0
 
_ys_Commented:
As previously stated:

The user must have been granted the 'Act as part of the operating system' user right.

Sorry, but no other solution to it.
0
 
acameronAuthor Commented:
I've got it, I can make a system call to runas.  Any idea how I can make c++ wait for the password prompt, then enter the password?
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

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

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