2016-06-02 9 views

答えて

2

はい、これは不可能です。ドライブマッピングは、対話型ログオン中にのみ確立されます。 ImpersonateLoggedOnUser関数は、ユーザーのログオンセッションの偽装を行わず、そのセキュリティコンテキストのみを偽装します。これは偽装を使用して行うことができないone of the many thingsのみです。

は、私はあなたが(彼らの会話型プロセスのいずれかから入手した)ユーザのログイン・トークンを複製し、その後CreateProcessAsUser関数を呼び出すことを利用して、これを行うことができるかもしれないと仮定します。次に、マップされたネットワークドライブで動作するプロセスを起動します。私は決してこれをやっていないので、これがうまくいくかどうかは確かではありませんが、理論的には可能です。

もちろん、このような迂回経路に従う必要があるのはなぜですか?ユーザーのインタラクティブなプロセスでコードを実行するだけで、標準のWindowsアプリケーションとして始めることが非常に賢明です。

これはサービスが行うように設計されたものではありません。サービスは、マップされたネットワークドライブをサポートしていません。サービス内からネットワークリソースにアクセスする場合は、UNCパスを使用するだけです。

+1

偽装するときに他に何が起こる可能性がありますか?[偽装するときにこの操作は可能ですか?既定の応答は[いいえ]です(https://blogs.msdn.microsoft.com/oldnewthing/20110928-00/?p=9533)。 – IInspectable

+0

ありがとう!私はどういうわけか、そのブログ投稿を見逃していたか、それとも完全に忘れてしまったのか。私はレイモンドがこれについて書いたと期待していたはずです!私の答えにリンクを組み込んで、より高い視認性を確保してください。 –

+0

サービスに関する正式な[ソース](https://msdn.microsoft.com/en-us/library/windows/desktop/ms685143.aspx)と、リダイレクトされたドライブを使用できない理由。 ( "[R] edirectedドライブは、異なるユーザーアカウントで実行されているプロセス間で共有できません。") – theB

関連する問題