投稿者 eigyou  (社会人) 投稿日時 2018/9/1 13:56:36
毎度お世話になります。

一般ユーザにてネットワークの設定変更を行いたく、管理者ユーザでネットワーク設定
変更のバッチファイルを起動させようとしています。
取りあえず、起動できそうな雰囲気になってきましたが、コマンドプロンプトのウィンドウ
を表示させたくないのですが、どうもうまくいきません。

どのようなオプションを指定すれば、可能でしょうか?


VB2010です

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim appPath As String = My.Application.Info.DirectoryPath.ToString()
        Dim blnRet As Boolean = False
        blnRet = RunAs(appPath & "\test.bat""""an_administrator""1234takara")
    End Sub


    Public Function RunAs(ByVal strExecName As StringByVal strArguments As StringOptional ByVal strUserName As String = ""Optional ByVal strPassword As String = ""As Boolean

        Dim psi As New System.Diagnostics.ProcessStartInfo()
        Dim p As System.Diagnostics.Process

        psi.UseShellExecute = True
        psi.Verb = "runas"
        psi.FileName = strExecName
        psi.Arguments = strArguments

        If strUserName <> "" Then
            psi.UserName = strUserName

            Dim pw As New System.Security.SecureString
            Dim ch As String
            For Each ch In strPassword.ToCharArray()
                pw.AppendChar(ch)
            Next
            psi.Password = pw
            psi.UseShellExecute = False
        End If

        'アクセスが許可されている作業ディレクトリを設定する 
        psi.WorkingDirectory = My.Application.Info.DirectoryPath.ToString()


        RunAs = True
        Try
            p = System.Diagnostics.Process.Start(psi)
            p.WaitForExit()

        Catch ex As System.ComponentModel.Win32Exception
            Debug.Print(ex.Message)
            RunAs = False
        End Try

    End Function