Windowsで任意のアプリケーションを管理者権限で実行する

Windowsで任意のアプリケーションを管理者権限で実行する

管理者権限で実行する方法

windowsで任意のアプリを管理者権限で実行する場合、
「管理者として実行」するか、RunAsコマンドで管理者権限で実行するかになります。

 

やりたいこと

ADユーザでログインスクリプトを仕込んだときにID/PASSを聞かれず
ユーザに気付かれずに動かしたい。

 

やったこと

VBでAPPのPathを渡したら管理者権限として実行するコンソールアプリを作成した。
また、PG内部にID/PASSを記述することでユーザに知られないようにした。

 

注意点

・作成したexeの場所やら使い方がバレるといろいろ問題。
・管理者PASSが変更になった場合コンパイルし直し。

 

VBソース

Module Module1

    Sub Main(args As String())
        Dim blnRet As Boolean = False
        blnRet = RunAs(args(0), "パラメータ", "ユーザ名", "パスワード")
    End Sub


    Public Function RunAs(ByVal strExecName As String, ByVal strArguments As String, Optional 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


        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

End Module<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>

 

 

まとめ

今回、実際したかったこととしてWindowsUpdateがあった際、
何故かデフォルトのプリンタ設定がSend To OneNoteになってしまうという残念な現象が発生していて
ログイン時にデフォルトプリンタを設定してしまおうと言う目論見です。

ドメイン参加PCにはこれが適用されるので便利です。