Jump to content

User MsgBox visibility under System Authority


Recommended Posts

I'm using a software distribution system that allows me to run installation executables, MSIs, etc. with System Authority. When I attempt to display a message box running an AutoIt script under System Authority, the current user can't see the message box. Is there an AutoIt setting that enables the System account GUI and current user account GUI to interact with each other?

Or, am I thinking about this all wrong? Any help would be appreciated.

Link to comment
Share on other sites

My exact syntax is:

$RebootStatus = MsgBox( 262144+4+4096, $CMDline[1] & " has been installed.", _
"You must reboot for " & $CMDline[1] & " to function properly." _
& @CRLF & @CRLF _
& "Do you want to reboot your computer now?", $MsgTimeOut )

I'm thinking I may have to use SysInternals' PSExec

Link to comment
Share on other sites

I'm wondering if NT Authority\System (I presume this is what you meant) has the ability to open a Modal messagebox. An idea I had would be to RunWait another AutoIT app that only has

RunAs

MsgBox

And set some other account to use with RunAs.

EDIT: I wanted to add that I couldn't exactly find whether or not that account can display a MsgBox, since Google kept showing me results about SQL. :)

Edited by Tripredacus
Link to comment
Share on other sites

"System" can indeed display message boxes. If I open a command session with psexec and the -i parameter:

psexec.exe -i -s %SystemRoot%\system32\cmd.exe

Launching the script from the command prompt, results in display of the message box.

I can run the installation I'm trying to run using my distribution application's "current user" mode instead of "system" and then use RunAs referencing an account that's a member of the local administrators group; but, doing so increases complexity and generates other issues. Oddly, using RunAs() under the "System" account doesn't seem to work.

Any other thoughts?

Link to comment
Share on other sites

Its looking like you are running into a security feature with the System account. It is by design that it does not have the ability to interact with a user. You haven't posted the client OS either, so any info I can find may not be specifically related to your problem.

There seems to be two ways for the System account to interact with a user:

1. Using psexec.

2. Using an interactive service.

Services running in an elevated security context, such as the LocalSystem account, should not create a window on the interactive desktop because any other application that is running on the interactive desktop can interact with this window. This exposes the service to any application that a logged-on user executes. Also, services that are running as LocalSystem should not access the interactive desktop by calling the OpenWindowStation or GetThreadDesktop function.

You can read about Interactive Services here, however I wouldn't know how you could change your AutoIT app into one of those.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...