ppaiyy520 发表于 2015-6-17 10:19:44

访问共享文件夹相关[已解决]

本帖最后由 ppaiyy520 于 2017-5-16 21:59 编辑

各位大虾:
我想做一个程序达到以下效果
我这有一个共享文件夹,比如D:\shared_folder,当别人在访问这个文件夹时候,我这边可以检测到是哪台电脑使用什么域账户进行访问的,什么时候登录的。可以做一个list文本出来,存在本地电脑其它地方,供查看。每条信息包括,计算机名(@ComputerName),登录userID(@UserName)登录时间,IP地址等。
我是初学者,有哪位大虾能帮我解决下么?

ila 发表于 2015-6-17 13:39:03

net seesion

502762378 发表于 2015-6-17 17:14:35

WMI          会话

cheng8457 发表于 2015-6-18 11:49:41

學習一下
正好碰到這個問題

cheng8457 发表于 2015-6-18 11:49:46

學習一下
正好碰到這個問題

ppaiyy520 发表于 2015-6-18 13:24:35

回复 3# 502762378


    WMI会话?什么意思?能说具体点么?

ppaiyy520 发表于 2015-6-18 13:27:40

回复 2# ila


    我搜索了下,有个_Net_Share_SessionGetInfo定义函数,我尝试写了一下,无法获取信息~

ila 发表于 2015-6-19 08:08:12

回复ila


    我搜索了下,有个_Net_Share_SessionGetInfo定义函数,我尝试写了一下,无法获取信息~
ppaiyy520 发表于 2015-6-18 13:27 http://www.autoitx.com/images/common/back.gif


    net seesion是批处理命令。dos命令回显看置顶的大全。

百度部分资料:
Net Session

列出或断开本地计算机和与之连接的客户端的会话。
net session [\computername]
参数

键入不带参数的 net session 可以显示所有与本地计算机的会话的信息。
\computername
标识要列出或断开会话的计算机。
/delete
结束与 \computername 计算机会话并关闭本次会话期间计算机的所有打开文件。如果省略
\computername 参数,将取消与本地计算机的所有会话。

chamlien 发表于 2015-6-23 00:11:07

接着8楼,给个图,现在还没测试多台访问,所以楼主自己测试一下

zhaoyun 发表于 2015-6-26 09:00:47

看看是什么效果~

ppaiyy520 发表于 2015-6-29 23:06:52

我用_net_share_connectionEnum函数写了下面程序,然后用_filewritelog保存到本地。可是执行起来只能显示一行信息,而且是最后一个信息,比如memowrite写的最后一条是ComputerName,文本里就只有这个信息,其他的信息不能显示。代码如下:
#include <GUIConstantsEx.au3>
#include <NetShare.au3>
#include <WindowsConstants.au3>
#include <File.au3>

Example()

Func Example()
        Local $aInfo
        $server=("\\srdmwprlab0067")
        $share=("Ms data")
        $aInfo=_Net_Share_ConnectionEnum($server,$share)
        MemoWrite("Error ...................: " & @error)
        ;MemoWrite("Entries read ............: " & $aInfo)
        For $iI = 1 To $aInfo
                MemoWrite("Connection ID ...........: " & $aInfo[$iI])
                MemoWrite("Connection type..........: " & _Net_Share_ResourceStr($aInfo[$iI]))
                MemoWrite("Number of files open ....: " & $aInfo[$iI])
                MemoWrite("Number of users .........: " & $aInfo[$iI])
                MemoWrite("Connection time .........: " & $aInfo[$iI])
                MemoWrite("User name ...............: " & $aInfo[$iI])
                MemoWrite("Computer name ...........: " & $aInfo[$iI])
                ;MemoWrite()
        Next
       
EndFunc
Func MemoWrite($message="")
        $sLogPath="D:\Test For Au3\test"
        _FileCreate($sLogPath & "\" & @MON & "月" & @MDAY & "日" & ".txt")
        _FileWriteLog($sLogPath & "\" & @MON & "月" & @MDAY & "日" & ".txt",$message & @CRLF)
EndFunc

       
各位大侠帮忙看看如何解决?谢谢~~

kemyliu 发表于 2015-7-13 22:11:13

_Net_Share_SessionGetInfo

luren666 发表于 2015-7-15 20:40:23

本帖最后由 luren666 于 2015-7-15 20:42 编辑

把 _FileCreate 放到 Example() 前面不就好了吗?
您每次执行MemoWrite 都 _FileCreate 不觉得很奇怪吗?

还有,个人感觉最好把_FileCreate换成 FileOpen 。

ppaiyy520 发表于 2015-7-20 15:36:03

回复 13# luren666


    因为我需要每天产生的log都要保存下来的。。。

luren666 发表于 2015-7-20 18:20:39

让你把_FileCreate 放到Example() 前面是因为,你每次_FileCreate 都创建了一个新文件,把之前的文件覆盖掉了,所以你的日志文件里面只有最后一行。

如果程序是长期运行在服务器上,一直长期运行不重启话,您想把每一天的日志文件单独保存到对应的日志文件,建议您加个判断日期的函数,如果发现日期变了,则创建一个对应的新文件。

还有不用一直写日志文件,可以把第一次取得的结果保存到文件,另外存一个副本到变量里面,然后判断本次取得的结果和上次的结果是否一样,如果不一样,则写入到文件,如果一样就没必要一直往文件里面写了,毕竟一直往里面写重复的内容没有意义,而且会使日志文件越来越大。
页: [1] 2
查看完整版本: 访问共享文件夹相关[已解决]