6

UACが有効になっているWindows2008まで、ユーザーになりすましています。一時ディレクトリにいくつかのファイルを書き込もうとしています。ただし、ユーザーがディレクトリへの書き込みアクセス権を持っている場合でも、そのユーザーになりすますと、そのディレクトリに書き込むことができません(アクセス拒否エラーが発生します)。どうやら、これはUACが私をブロックしているためです。

これは、マイクロソフトフォーラムへの投稿に関連しています:http://forums.iis.net/t/1149793.aspxしかし、そのフォーラムは、マイクロソフトの従業員が同じ質問を繰り返し行い、情報を入手したときに沈黙している以外に応答がありませんでした。彼は求めた。

一時ファイルへの書き込み中に偽装しないことでこれを回避することができましたが、いくつか質問があります。

  1. 偽装されたときにUACがファイルへの書き込みを許可しないのはなぜですか?

  2. なりすまし中に一時ファイルを置くことができる場所はありますか?

  3. より良い解決策はありますか?これを処理するための「正しい」方法は何ですか?

  4. UACおよび偽装ユーザーに対するすべての制限についてのドキュメントのソースはありますか?

4

5 に答える 5

3

Vista では、標準のアクセス許可に加えて整合性レベルが導入されました。アプリケーションが実行している整合性レベルが、場所/ファイルへの書き込みに必要な整合性レベルよりも低い可能性があります。

Windows には組み込みツール「cacls.exe」が付属していますが、 http://www.minasi.com/apps/の chml をお勧めします。これにより、表示と編集が容易になります。詳細については、 http://msdn.microsoft.com/en-us/library/bb625964.aspxも参照してください。

于 2009-07-03T03:26:54.610 に答える
1

私の推測では、%TEMP%で指定された、またはGetTempPathを介して一時ディレクトリに書き込んでいます。これはプロセス全体の環境変数であるため、なりすましを尊重しません。確認する簡単な方法は、書き込み先のパスをチェックして、それが偽装されたユーザーのプロファイルの下にあるかどうかを確認することです。

次のコードは、偽装されたユーザーの一時パスを取得できるはずです。

// Error checking removed for brevity.
// User profile must be loaded by this point,
// see LoadUserProfile/UnloadUserProfile
SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, impersonationToken,
                SHGFP_TYPE_CURRENT,path);
StringCchCat(path, cchPath, "\Temp");
于 2009-04-25T18:44:29.897 に答える
1

NuSkoolerの答えはおそらく正しいと思います。彼がリンクしているドキュメント (具体的には、このページ) では、ルート フォルダーについて次のように説明しています。

子オブジェクトには適用されるが、子コンテナーには適用されない高い整合性レベルの必須ラベルを設定することにより、ルート フォルダーの既定のセキュリティはこのポリシーを満たします。中程度の整合性レベルでプログラムを実行する標準ユーザーは、管理者がルート フォルダーに作成したファイルを変更できません。これは、ACL がユーザーに変更アクセスを許可している場合でも同様です。ルート フォルダーには、オブジェクト継承であり、サブフォルダーに伝達されない高整合性の継承可能な必須ラベルがあります。

あなたの状況の詳細はわかりませんが、ACL に明示的な許可エントリがあるにもかかわらず、フォルダーに書き込むことができないのと同じように聞こえます。

Process Explorer と Process Monitor を使用して正確に何が起こっているかを確認する必要がありますが、整合性レベルの可能性があるように思えます。

また、cacls だけでなく icacls を実行する必要があります。これにより、ACL の整合性レベルが表示されます。

于 2010-08-29T01:36:04.417 に答える
0

msft からプロセス モニターを試す必要があります。このツールは、これが失敗する理由に関する詳細情報を提供するはずです。

于 2010-08-27T17:54:55.313 に答える