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

一般ユーザにてネットワークの設定変更を行いたく、管理者ユーザでネットワーク設定
変更のバッチファイルを起動させようとしています。

先ほど、ウィンドウの件で、質問しましたが、それ以前に昇格して起動できませんでした

実際に、ネットワークの設定変更のバッチを起動すると、設定変更できず、権限の昇格が
必要ですとのエラーがでます

UACのダイヤログが表示されてOKしないといけないと思われますが、うまくいきません
これって無理なのかしらん

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""abcd1234")

    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()

        If ParentForm IsNot Nothing Then
            'UACダイアログが親プログラムに対して表示されるようにする 
            psi.ErrorDialog = True
            psi.ErrorDialogParentHandle = ParentForm.Handle
        End If

        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