Brian
asked on
Process.Start code not working when trying to launch as a specified user
I found this code that should run a program as a different user, but it errors and doesn't run the program. Is there something I'm not doing correctly?
Imports System.Security
Imports System.ComponentModel
Module Module1
Sub Main()
Dim username As String = "MyUser"
Dim password As SecureString = ConvertToSecureString("MyPassword")
Dim domain As String = "MyDomain"
Dim filename As String = "c:\windows\notepad.exe"
Try
System.Diagnostics.Process.Start(filename, username, password, domain)
Catch ex As Win32Exception
System.Windows.Forms.MessageBox.Show("Something went wrong!", "Error")
End Try
End Sub
Function ConvertToSecureString(ByVal str As String)
Dim password As New SecureString
For Each c As Char In str.ToCharArray
password.AppendChar(c)
Next
Return password
End Function
End Module
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
As I said, my VB is a little rusty. ToSecureString is a method. Perhaps it needs the parentheses () at the end?
DOH! It might have been helpful if I'd have included the Extension class declaration that houses the "ToSecureString()" method.
Public Class LocalExtensions
Public Shared Function ToSecureString(this ByVal password As String) As SecureString
Dim secure As SecureString = New SecureString
For Each c As Char In password
secure.AppendChar(c)
Next
Return secure
End Function
End Class
I'm not 100% certain if extension classes are allowed in VB.NET so here's another version that should work just fine. Public Shared Function ToSecureString(ByVal password As String) As SecureString
Dim secure As SecureString = New SecureString
For Each c As Char In password
secure.AppendChar(c)
Next
Return secure
End Function
You'd just call that as a regular function like this:startInfo.Password = ToSecureString("MyPassword")
ASKER
Thanks Russ for giving such clear and precise information!
ASKER