Windows で他のユーザーになりすますことができます。例: ユーザー A と管理者のみのアクセス許可を持つディレクトリを作成します。ユーザー B でログオンして .exe を実行すると、ユーザー A になりすまして、その特定のディレクトリで編集/削除/挿入するアクセス許可を取得したいと考えています。
私はこれを見つけました: http://msdn.microsoft.com/en-us/library/aa374731(VS.85).aspx
Windows で他のユーザーになりすますことができます。例: ユーザー A と管理者のみのアクセス許可を持つディレクトリを作成します。ユーザー B でログオンして .exe を実行すると、ユーザー A になりすまして、その特定のディレクトリで編集/削除/挿入するアクセス許可を取得したいと考えています。
私はこれを見つけました: http://msdn.microsoft.com/en-us/library/aa374731(VS.85).aspx
まず、Windows ユーザーのなりすましに関する次の記事を確認してください。
http://www.codeproject.com/KB/system/UserImpersonation.aspx
それはあなたに出発点を与えるはずです。さらに制御が必要な場合は、アクセス トークンを調べる必要があります。
ユーザーAのフォルダーとユーザーBのフォルダーにアクセスする場合は、管理者がすべてのフォルダーにアクセスするためのアクセス許可を持つように、フォルダーのアクセス許可を設定する必要があります。通常、マシン管理者はすでにそれらの権限を持っています。ここでは、通常のWindowsユーザーアカウントと通常のマシン/ドメイン管理者アカウントについて話していると想定しています。
ユーザーAになりたい場合は、その人になるためにユーザーAのアクティブな権限が必要であることを意味します。なりすましは(私が試したことから)単純ではありません。ドメインコントローラーを介してアクセスを要求し、ユーザーBであり、ユーザーAになりすます権利があることをネゴシエートする必要があります。これは通常、ユーザーAとユーザーBの共有によって行われます。クレデンシャルハンドルとセキュリティコンテキストのネゴシエーション。これがあなたが従おうとしているタイプのプロセスではないかと思います。
いくつかの便利な機能は次のとおりです。
コンテキストを設定するために、これらが使用され、データはユーザーAとユーザーBの間で前後に渡され、なりすましをネゴシエートします。
AcquireCredentialsHandle()
InitializeSecurityContext()
AcceptSecurityContext()
CompleteAuthToken()
ネゴシエーションが完了し、セキュリティコンテキストが作成されると、これらはなりすましを開始および停止するために使用されます。
ImpersonateSecurityContext()
RevertContext()
問題のユーザーが積極的に参加したり、そのユーザーとして積極的にログオンしたりせずに、ユーザーになりすます方法は他にありません。
これが何らかの形で役立つことを願っています。