RE: UAC via ShellExecute - can't capture stdout

"Ryan Rinaldi (TT)" <[email protected]>
Newsgroups gmane.comp.windows.off-topic
Message-ID <8300EE53FE0B104391E0983F3AA8FA1F06730E6A@chiex01>
Wow.  I completely got hung up on you saying "ShellExecute" and didn't
read the code you posted.  Reading FAIL.

On $psi you should be able to set RedirectStandardOutput to true then
read the output from the StandardOutput stream of the process object
returned from Process.Start().

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Ryan Rinaldi
(TT)
Sent: Monday, July 13, 2009 11:28 AM
To: [email protected]
Subject: RE: [OT] UAC via ShellExecute - can't capture stdout

Since PS is based on .NET can't you use Process.Start()[1]?
Process.Start() takes in a ProcessStartInfo[2] which allows you to
redirect stout. 

1: http://msdn.microsoft.com/en-us/library/0w4h05yb.aspx
2:
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstarti
nfo_members.aspx


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Scott Zionic
Sent: Monday, July 13, 2009 11:21 AM
To: [email protected]
Subject: [OT] UAC via ShellExecute - can't capture stdout


I love PowerShell - but I don't love this message:

"The requested operation requires elevation."

For example, "ipconfig /flushdns" requires elevated privileges. I could
use "runas" like so:

runas /user:username "cmd /k ipconfig /flushdns"

But now I'm doing a lot of unnecessary typing and I even have to enter a
password even though the username I pass is the currently logged on
user.

I did some googling and came up with what initially appeared to be a
solution:

http://www.peterprovost.org/blog/post/Shifting-Powershell-Arrays.aspx

function elevate
{
   $file, [string]$arguments = $args;
   $psi = new-object System.Diagnostics.ProcessStartInfo $file;
   $psi.Arguments = $arguments;
   $psi.Verb = "runas";
   [System.Diagnostics.Process]::Start($psi);
}

This function uses ShellExecute with the runas verb in order to achieve
much the same result as above but it's much nicer since it doesn't
require
all of the extraneous typing. One major problem, though: there is no way
to redirect stdout when launching a process via ShellExecute. So even
though I can use this function with "ipconfig /flushdns", there is no
way
to know for sure that the command succeeded since the output is written
to
a console window that immediately disappears.

Is there any why to get the functionality of the runas verb without
using
ShellExecute?

Scott






------------------------------------

Yahoo! Groups Links





------------------------------------

Yahoo! Groups Links
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.