HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1024
(´ω`)別マシンのWindowsにログオン4解決


(´ω`)

リンク

2015/10/24(Sat) 08:29:25|NO.72460

えー、2台のWindowsマシンがありまして。
マシンA、Bとします。

マシンAには、すでにマシンBから接続するためのWindowsアカウントが作ってあります。
Aの中には、Bと共用するためのフォルダが作ってあります。
(仮に、\\machine_A\共用 だとします)

BからAに接続し、\\machine_A\共用 にアクセスする場合、WindowsがIDとPasswordを
尋ねてくるダイアログが出ます。んで、それを入力してやれば、ログオンしてアクセスできる。
ここまではちゃんとできることを、手動で確認済みです。

問題は、Bから\\machine_A\共用 へアクセスするプログラムを作った場合。
事前にログオンしてないと、弾かれてしまいエラーになります。
つまり、マシンAとの接続が切れてる場合、毎回手作業でID・Passwordを入力してログオン
した上でないとプログラムが使えないわけです。

というわけで、現在ログオン状態かどうか確認をし、そうでないならログオンする機能を
プログラムにつけてやりたいのです。
よろしくお願い申し上げます。(´・ω・`)



この記事に返信する


(´ω`)

リンク

2015/10/24(Sat) 08:43:59|NO.72461

補足。

ログオン状態でも、例えば対象フォルダ内のテキストファイルを標準命令(noteload など)で
読もうとするとエラーになりますが、SQLele でデータベースファイルにアクセスするのは
できます。
(SQLite が別マシンのフォルダ内にあるDBファイルへのアクセスに対応してる、という感じ)

でも、ログオンしてないと、それすらもできないということでして。
よろしくお願いいたします。(´・ω・`)



さか

リンク

2015/10/24(Sat) 10:40:01|NO.72463

HSPに限らずログオンするのはちょっと難しいように思います。

その前に「\\machine_A\共用」へ接続するのに\\machine_Aのログオン状態は関係ないはずです。
接続状態にするのはDOSコマンドの
net use \\machine_A\共用 パスワード /user:ID
で行うか、ネットワークドライブを使用するのが一般的だと思います。

詳細は「net use」「ネットワークドライブ」で調べてみてください。



tds12

リンク

2015/10/24(Sat) 11:22:22|NO.72464

このようなことでしょうか。
作ってみましたが、実行もしていないので、
正しく動くかはわかりません。
もしかしたら見当違いのスクリプトかもしれません。


#module #define RESOURCETYPE_DISK $00000001 #define CONNECT_INTERACTIVE $00000008 #uselib "mpr.dll" #func WNetUseConnection "WNetUseConnectionA" sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr #deffunc connectnetdisk str _diskname,str _password diskname = _diskname password = _password buffersize = strlen(diskname) + 1 sdim accessname,buffersize result = 0 dim netresource,8 netresource(1) = RESOURCETYPE_DISK netresource(5) = varptr(diskname) WNetUseConnection hwnd,varptr(netresource),varptr(password),0,CONNECT_INTERACTIVE,varptr(accessname),varptr(buffersize),varptr(result) return stat #global connectnetdisk "\\\\machine_A\\共用","****" //第1引数にはアクセス先,第2引数にはパスワードを指定する。 //自由に使ってください。 //無保証です。 //ただし、エラー時(リダイレクトを含む) //のことはあまり考えていないので、 //改良が必要かもしれません。



(´ω`)

リンク

2015/10/24(Sat) 14:29:41|NO.72466

さか様、tds12様

ありがとうございます、多分コレというかすっごく恥ずかしいと言いますか、

誤: \\machine_A\共用 正: \\\\machine_A\\共用
だったのに加え、何かの拍子に既存接続がある状態でさらに接続をしようとしてたようで、
マシンの再起動を行うとふつーにディレクトリ一覧も取れました。
SQLeleで接続できていたのは、クエリ文中のフォルダ指定はSQLiteのDLLが解釈するので、
上記の"誤"で問題なく通ったのではないか、と思われます。

あと、netコマンドのご紹介、ありがとうございます。
ネット越しで何やかんやする時に色々役立ちそうです。
tds12様はサンプルまで頂いて、もう何というか誠に申し訳ございません。

何卒、今後とも宜しくお願い申し上げ奉ります(´;ω;`)



ONION software Copyright 1997-2021(c) All rights reserved.