2016-05-02 26 views
3

vb.netで管理者権限が必要なアプリケーションを開発しました。私はアプリケーションマニフェストでlevel = "requireAdministrator"を設定しました。私のクライアントは、組織のいくつかの制約のために、このアプリケーションをローカルユーザーが実行することを望んでいます。そこで、管理者の資格情報を暗号化された形式で保存し、保存された資格情報を使用して「オリジナル」アプリケーションを実行する別の「ランチャー」アプリケーションを作成しました。Process.start()が管理者として実行しようとしているときにエラーを投げる

「管理者」アカウント(ビルトインアカウント)を使用しているとすべて正常に機能します。しかし、手動で作成した管理者アカウントの資格情報を使用している場合、process.start()行で「要求された操作に仰角が必要です」というエラーが表示されます 組み込みの管理者と手動作成された管理者アカウント。私は、(組み込みの、手動で作成された)両方のユーザーがAdministratorsとHomeUsersのメンバーであることを確認しました。私は、さまざまなユーザーグループを持つ異なるユーザーを作成し、異なるOS(Windows 7とWindows 10 - 32ビットと64ビットの両方)を作成しても、すべての可能性を試しましたが、すべて上記と同じ方法で動作しています。私のコードで変更が必要なことはありますか?

 Dim psi As New System.Diagnostics.ProcessStartInfo() 
     psi.FileName = (AppToStart) 
     psi.RedirectStandardError = True 
     psi.RedirectStandardOutput = True 
     psi.CreateNoWindow = True 
     psi.UseShellExecute = False 
     psi.UserName = TbUser.Text 
     psi.Password = ConvertToSecureString(TbPass.Text) 
     psi.Domain = "" 
     Dim p As Process = Process.Start(psi) 

追加情報:ここで私は、標準ユーザー(管理者ではない)として、この「ランチャー」アプリケーションを実行しているアプリケーションがうまく機能し、それが本当に

TbUser.Text =「管理者場合は権限を昇格"と TbPass.Text = 123(管理者パスワード)。

TbUser.Text =「ADMINUSER」(管理者でもある同じ「管理者」グループに属している)場合

しかし、これは昇降されていない特権と TbPass.Text = 321(ADMINUSERのパスワード)。ときpsi.UseShellExecute = False

+2

可能な複製(http://stackoverflow.com/questions/3596259 [昇降権限があるUseShellExecute =虚偽では動作しません]の言います/ elevating-privileges-doesnt-work-with-useshellexecute-false) – GSerg

答えて

1

は残念ながらあなたはこのを行うと、ここですることはできませんが...

基本的verbが認識されないされている理由は、これはpsi.UseShellExecute = Trueする必要があります。昇格したアクセス許可としてrunasを使用しようとしているときにこれを実行しています。

状況によっては、verb = runasを使用しないでください。アプリケーションが既に適切な権限で開始されていることを確認してください。

権限を昇降についてhere詳細を参照してください、ハンスアンパッサンは、それが最高...の

+0

@MaliCMT:これに加えて、昇格した権限で開始するバックグラウンドアプリケーションを作成することができます。あなたのバックグラウンドアプリは、次にリダイレクトされた出力で必要なプロセスを開始し、backgoundアプリケーションはそれ自身を閉じます。これで、バックグラウンドアプリからIDを取得するか、名前で検索するだけで適切なプロセスを見つけられるようになりました。 –

+0

@zaggler:そうです。実際、私は.verb = "runas"をさまざまな可能性のテストの一部として入れ、投稿中にコードから削除するのを忘れました。私は行を削除しました。ご意見ありがとうございます。残念ながらあなたの答えは私の質問に答えなかった。私は私の質問をもう少し明確にしました。 – MaliCMT

関連する問題