2012-03-29 17 views
1

私はまれな状況でレジストリ設定を変更する必要があるアプリケーションを持っています。また、最初の実行中に新しいキーを作成する必要があります。私はWindows 7でこれを開発しています。私はThrowUnauthorizedAccessExceptionを取得します。アクセス許可を一時的に引き上げるようにWindowsにUACプロンプトを表示させるにはどうすればよいですか?特権昇格のアプリケーションリクエスト

ありがとうございます。

+1

既存のプロセスの権限を昇格することはできません。より高い権限で新しいプロセスを生成する必要があります。 – CodesInChaos

+0

@ CodeInChaos Bummer。私は本当にこれが可能であることを望んでいた。 – kmarks2

+1

問題は、特権レベルが完全性レベルを2倍にすることです。しかし、すでに実行中のプロセスの安全な高度をサポートするためには、そのプロセスは最高レベルの完全性レベルを必要とします。それ以外の場合は、信頼性の低い他のプロセスが低い完全性/権限レベルで実行している間にプロセスを操作する可能性があります。 – CodesInChaos

答えて

3

すべてのユーザーはこの設定を変更できますか?その場合、最も簡単な解決策は、ユーザーにFull Controlのレジストリキーを与えるようにインストールプログラムを変更することです。

管理者だけが、この設定を変更することができるはずならば、あなたはそれを高めるためにWindowsを求めて、あなたのプログラムの別のコピーを起動する必要があります:あなたがスマートだったらあなたには、いくつかのコマンドラインが含まれるであろう

ProcessStartInfo startInfo = new ProcessStartInfo("C:\Path\To\MyApplication.exe"); 

startInfo.Verb = "runas"; //trigger a UAC prompt (if UAC is enabled) 

System.Diagnostics.Process.Start(startInfo); 

あなた自身が、ユーザーが対処しなければならないソフトウェアの部分にまっすぐに飛ぶべきだと言うことができます。

ProcessStartInfo startInfo = new ProcessStartInfo(
     "C:\Path\To\MyApplication.exe", 
     "/setLoggingEnabled yes"); 

startInfo.Verb = "runas"; //trigger a UAC prompt (if UAC is enabled)  

System.Diagnostics.Process.Start(startInfo); 

は、setLoggingEnabledスイッチ用アプリケーションのチェックをお持ちの変更を行い、[終了:。またはあなたのコマンドライン引数は、ちょうどあなたが行って欲しい言うことができます

更新:一般的な状況は、World of Warcraftのプレイヤーです。ゲームは実行中に自身を更新することが許可されているので、すべてのユーザは、Program Filesにあるゲームデータを変更することを許可されなければならない。 正しく、有効アクションは、すべてのユーザーが完全に制御を持っているように、

C:\Program Files\Blizzard\World of Warcraft 

フォルダのACLを変更することです。事実、Blizzardが共謀する前に、Microsoftはアプリケーション互換性の更新をリリースしました。これにより、次回は管理者として実行されるWoWフォルダに対してすべてのユーザーが完全に制御できます。 ブリザードランチャーが管理privelagesで起動したとき

他の一般的な場合には、それがゲームがどこにあるかを記録し、HKLMレジストリキーを更新しています。これは、たとえば、私はWoWをハードディスクからSSDドライブに移動するときに発生します。

アップデータが正しく動作するようにランチャーを管理者として一度実行します。

+0

ありがとうございます。これは、私が見たような答えに近いものです。 – kmarks2

関連する問題