LAN内 windows network 他のPCへのログイン

解決


ちょび  2005-06-18 21:44:12  No: 15764

LAN内の他のPC内のフォルダを操作しようとしてますが、
IDとパスワードをつかって  プログラムで自動ログインってどうやるんでしょう?


kkk  2005-06-19 12:32:59  No: 15765

BorlandのC++Builderでの例があります
http://www.borland.co.jp/tips/cbuilder/cb013/ntshut2.html
-----------------------
前もって LogonExecute() でログオンしておき
必要な処理が終わったら LogoffExecute()でログオフします。
ちょっとpascalに落としてみました。
動作確認はしていません・・・^^;)
動かなかったらスマソ。
-----------------------
uses に Windows,...を加えて

// HostにはIPアドレスも指定できます。
function LogonExecute(Host, UserName, Passwd: string): DWord;
var
  NetRes : TNetResource;
  str: string;
begin
  FillChar(NetRes, SizeOf(NetRes), 0);
  NetRes.dwType := RESOURCETYPE_DISK;

  str := '\\' + Host + '\IPC$';
  NetRes.lpRemoteName := PChar(str);

  Result := WNetAddConnection2(NetRes, PChar(Passwd), PChar(UserName),
                                     CONNECT_UPDATE_PROFILE);
{必要ならコメントをはずす
  if retn <> NO_ERROR then begin
    case retn of
     ERROR_SESSION_CREDENTIAL_CONFLICT:
       begin
         ErrMsg('Error SessionConflict');
         Result := False;
       end;
     else
       begin
         ErrMsg( 'Err :'+IntToStr(retn) );
         Result := False;
       end;
    end;
  end;
}
end;

// HostにはIPアドレスも指定できます。
function LogoffExecute(Host: string): DWord;
var
  str: string;
begin
  str := '\\' + Host + '\IPC$';
  Result := WNetCancelConnection2(PChar(str), CONNECT_UPDATE_PROFILE, False);
{必要ならコメントをはずす
  if retn <> NO_ERROR then begin
    case retn of
     ERROR_OPEN_FILES:
       begin
         Result := True;
       end;
     else
       begin
         ErrMsg( 'Err :'+IntToStr(retn) );
         Result := False;
       end;
    end;
  end;
}
end;
---------------


ちょび  2005-06-20 18:00:53  No: 15766

ありがとうございます。
うまくいきました。


ともや  2005-06-21 18:57:53  No: 15767

今更ですみませんが上記の方法のやり方を解説してはいただけないでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加