::CopyFileで、別マシン(WindowsXP)の共有フォルダに¥¥でファイルをコピーしたいで
す。
しかし、アカウントの認証に失敗して、ファイルコピーできませんでした。
コピー元マシンとコピー先マシンにはadministrator/adminとユーザがいます。
そこで、このPG(A)を起動する別のPG(B)をかまして、
Bでadministrator/adminのアカウントを取得して、administratorでAを実行することで
、別マシンへのファイルコピーに成功しました。
しかし、以下のようにしたいです。
・Aはシステムアカウントで直接サービス起動する。
・Aの中でadministrator/adminアカウントを取得して、administratorとしてCopyFileAPI
を実行する。
この用にAPI単位で、アカウント実行する方法があるようでしたらご教授ください。
環境:WINXP
VC6.0
API単位ではありませんが、
スレッド単位でユーザーを偽装することが可能です。
手順は以下のとおり。
1. LogonUserでユーザートークンを取得
2. ImpersonateLoggedOnUserでユーザーを偽装
3. なんらかの処理を実行
4. RevertToSelfで偽装を解除
ドメインを組んでいる場合はドメインユーザーアカウントを
ImpersonateLoggedOnUserにその情報を指定できますし、
そうでない場合でもローカルとリモートに同名・同パスワードの
ユーザーを作成して、その情報でアクセスすることが可能です。
スレッド単位で偽装できればOKです。
ありがとうございました。
ちなみに、サービス起動したプログラムで¥¥コピーする方法は他にありますか?
SHFileOperationを使うとか、
CreateFileして自前でReadFile,WriteFileするくらいでしょうか。
理解しました。
ありがとうございます。