2008-08-20 8 views

答えて

25

アクションを実行できないかどうかを検出する最善の方法は、試行してUnauthorizedAccessExceptionをキャッチすることです。

ただし、@DannySmurfcorrectly points outは、COMオブジェクトを昇格するか、別のプロセスにすることしかできません。

UAC DemoというWindows SDKのクロステクノロジーサンプルには、デモンストレーションアプリケーションがあります。このデモンストレーションアプリケーションは、昇格したプロセスでアクションを実行する方法を示しています。また、ユーザーが現在管理者であるかどうかを調べる方法も示します。

+0

UACのデモへのいい言及は、私が必要としていたものです。どうもありがとう。私は時には多くの担当者を与えることができれば欲しい! – Ryan

+0

@ライアンようこそ。 UACが管理された環境にあるように見えるのは少し不満です。私のユーザープロフィールを閲覧して、他の質問をアップしてもよろしいですか? :) –

+0

ところで、例外名はUnauthorizedAccessExceptionで、zはUnauthorizedです。それだけ ;) –

16

要求標高半ば実行が必要とあなたのどちらか:

  1. プロンプト
  2. スタートを開始してから上昇している第二の方法をお付けいたします上昇のCOMコントロールを使用します。

現在、実行中のプロセスを昇格させる方法はありません。あなたは上記のハッカーのことの一つをしなければなりませんが、現在のプロセスが上がっている様子をユーザに伝えるだけです。

パスがUACであるかどうかを確認するには、昇格していない状態で、例外をキャッチして、再度試してみてください。

+7

注こと - それはユーザーアカウント制御システムの一般的な制限事項です。 –

+4

これはUACの制限ではないことに注意してください.Windows NTのセキュリティモデルの一般的な制限です(実行中のプロセスはセキュリティトークンを変更できません)。 –

+1

悪意のある攻撃者がコードを事前昇降プロセスに注入する可能性があり、このコードはこのプロセスと共に上昇する可能性があることに注意してください。 – ghord

1

パスが保護されていることをユーザーに通知し、ファイルを「安全な」領域に出力するように要求することができます。この方法であなたのアプリは高度を必要としません。私はそれがあなたのユーザとあなたがやろうとしていることに依存していると確信していますが、Windows/System32フォルダにxyzをダンプしてもらえないことをユーザに知らせるのは大変だとは思いません。

-1

セカンダリドライブに独自のファイル権限がある場合は、他のWindowsコピーがインストールされているようなものです。プロンプトが表示されます。

また、ファイルが使用中であるかどうかを確認するメッセージが表示されます。これは、同じエクスプローラで開いているウィンドウエクスプローラとファイルプレビューアで選択したファイルがコンテンツを表示している場合に発生します。ファイルが使用されているか、またはそれが機密のディレクトリである場合にファイル許可を求められます。

FolderBrowserDialogをループする場合は、その理由をユーザーに知らせるようにしてください。そうすれば、アプリで気にならないでしょう。

注:アクセス権を尋ねるネット方法はありません。おそらくp/win32 APIを呼び出すのでしょうか?

+0

P/Invokingは何も変更しません。あなたが管理されているかどうかに関わらず、UACのルールは同じです。それはCOM、外部プロセス、またはバストです。 –

-1

UACが自分のGUIDに基づいてオブジェクトを高めることができ、これは(理論的には)GUIDを持つ任意のクラスが上昇することができることを意味し、UACDemoもこの

関連する問題