CodeMonger
CodeMonger

Reputation: 347

VB.Net Process.Start - Verb

I want my vb.net Program to launch notepad and elevate the credentials however there is no prompt and the program just opens.

    Dim process As System.Diagnostics.Process = Nothing
    Dim processStartInfo As System.Diagnostics.ProcessStartInfo
    processStartInfo = New System.Diagnostics.ProcessStartInfo()
    processStartInfo.FileName = "notepad.exe"
    processStartInfo.Verb = "runas"

    processStartInfo.Arguments = ""
    processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal
    processStartInfo.UseShellExecute = True
    process = System.Diagnostics.Process.Start(processStartInfo)

Upvotes: 0

Views: 3908

Answers (1)

jmcilhinney
jmcilhinney

Reputation: 54417

There's a lot of unnecessary code there. You're using two lines to declare and set your two variables when you only need one each time. You're setting the FileName property explicitly when you can pass an argument to the constructor and you're also setting three properties to their default values. I just stripped it down to the bare minimum:

Dim psi As New ProcessStartInfo("notepad.exe") With {.Verb = "runas"}
Dim proc = Process.Start(psi)

When I ran that code from a new WinForms app with just a Button on the form and I got a UAC prompt as expected.

Upvotes: 2

Related Questions