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.SecurityImports System.ComponentModelModule 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 FunctionEnd Module
That's awesome! Thanks Russ! But I am getting an error for "MyPassword".ToSecureString. The error is 'ToSecureString' is not a member of 'String'. Maybe I need another Imports?
Russ Suter
As I said, my VB is a little rusty. ToSecureString is a method. Perhaps it needs the parentheses () at the end?
Russ Suter
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 FunctionEnd 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