分類:[VB.NET/VB2005 以降]
2015/10/30(Fri) 11:02:31 編集(投稿者)
VB.NET
開発環境:Visual Studio Express 2013
(No77531の質問に関連して連投申し訳ないです)
フォーム上に配置したボタンからODBC登録を行えるようにしているのですが
管理者権限で起動しないと登録に失敗してしまいます。
調べてみたところ、マニフェストファイルのrequestedExecutionLevelを
requireAdministratorにすればよいとあったのですが、ClickOnceが有効になっているとNGになるようでした。
参考URL:http://okwave.jp/qa/q7347035.html
プロジェクトのセキュリティプロパティから、「ClickOnceセキュリティ設定を有効にする」の
チェックを外してみたのですが、結果は変わりませんでした。
上記URL内に記載されているMSDNのサイトも見てみたのですが、恥ずかしながら解決方法がわかりませんでした。
そこで別に、「アプリケーション開始時にrunasの動詞をつけて自身を管理者権限にて実行する」、
という記事を見つけましたので、ApplicationEventsに以下のように記載しました。
------------------------------------------------------
Namespace My
Partial Friend Class MyApplication
Private Sub MyApplication_Startup(ByVal sender As Object, _
ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) _
Handles Me.Startup
'管理者として自分自身を起動する
Dim psi As New System.Diagnostics.ProcessStartInfo()
'ShellExecuteを使う。デフォルトtrueなので、必要はない。
psi.UseShellExecute = True
'自分自身のパスを設定する
psi.FileName = System.Reflection.Assembly.GetExecutingAssembly().Location
'動詞に「runas」をつける
psi.Verb = "runas"
Try
System.Diagnostics.Process.Start(psi)
Catch ex As System.ComponentModel.Win32Exception
'「ユーザーアカウント制御」ダイアログでキャンセルされたなどによって
'起動できなかった時
Console.WriteLine("起動しませんでした: " & ex.Message)
End Try
End Sub
End Class
End Namespace
--------------------------------------------------------
参考URL:http://dobon.net/vb/dotnet/system/asadmin.html
こうすると起動されたフォームのボタンからODBC登録が出来たため、管理者権限にて起動はしたのですが、
この後に続くフォームロード時に、またこのクラスが呼び出されているようで、無限ループに陥ってしまいました。
そこで、お聞きしたいのが以下の2点です。
・ClickOnceの設定で管理者権限起動を行うにはどのようにすればよいのか。
・上記MyApplicationクラスの記載で無限ループを回避するにはどのようにすれば良いのか。
恐縮ですが、お知恵を拝借頂ければと思います。