vb.netを利用してみて、クライアント端末に対して管理者権限を所持していなくても安全に指定したアプリケーションだけは対話型ウィンドウでインストール出来る仕組みを何か作れないかなと考えておりました。
インターネット上の色々なナレッジを読ませていただきまして、コピー&ペーストでとりあえず動作するexeを作ってみたは良いものの、どうやらそのまま利用してしまっては.NET逆コンパイラを利用した場合に、すぐにパスワードとして設定している値が読み取れてしまうようで、単純にバイナリを作成して配ってしまっただけではセキュリティを一定レベルに担保するのは難しいようです。
やはり権限を付与する部分はASP.netなりを利用してサーバ側で実行してしまうか、サービスを作成してアプリケーションをシステム権限でUpdate出来る仕組みを作ってしまうのが影響範囲的にもよさそうです。
このまま配布するとセキュリティ的に問題が発生してしまうとは思いますが、コードを添付しておきます。
※今回コードの勉強させていただいたサイトと逆コンパイラに関しては文末の参考欄に記載してあります。
Module Module1 Sub Main() 'ユーザ名とパスワードを入力する Dim UserName As String = "ユーザ名" Dim PassWord As String = "パスワード" Dim strPWD As String = PassWord Dim SecureString As System.Security.SecureString = New System.Security.SecureString() Dim i As Integer = 1 For i = 1 To Len(strPWD) SecureString.AppendChar(CChar(Mid(strPWD, i, 1))) Next Dim psi As New System.Diagnostics.ProcessStartInfo() psi.UserName = UserName psi.Password = SecureString 'ComSpecのパスを取得する psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec") '出力を読み取れるようにする psi.RedirectStandardInput = False psi.RedirectStandardOutput = True psi.UseShellExecute = False 'ウィンドウを表示しないようにする psi.CreateNoWindow = True 'コマンドラインを指定("/c"は実行後閉じるために必要) psi.Arguments = "/c ipconfig /all" Dim p As System.Diagnostics.Process Dim results As String Try p = System.Diagnostics.Process.Start(psi) Catch ex As System.ComponentModel.Win32Exception Console.Write("ユーザー名を認識できないか、またはパスワードが間違っています。") Return End Try '出力を読み取る results = p.StandardOutput.ReadToEnd '出力された結果を表示 Console.WriteLine(results) p.WaitForExit() End Sub End Module