找回密码
 加入
搜索
查看: 8399|回复: 17

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

 火.. [复制链接]
发表于 2015-6-17 10:19:44 | 显示全部楼层 |阅读模式
本帖最后由 ppaiyy520 于 2017-5-16 21:59 编辑

各位大虾:
我想做一个程序达到以下效果
我这有一个共享文件夹,比如D:\shared_folder,当别人在访问这个文件夹时候,我这边可以检测到是哪台电脑使用什么域账户进行访问的,什么时候登录的。可以做一个list文本出来,存在本地电脑其它地方,供查看。每条信息包括,计算机名(@ComputerName),登录userID(@UserName)登录时间,IP地址等。
我是初学者,有哪位大虾能帮我解决下么?
发表于 2015-6-17 13:39:03 | 显示全部楼层
net seesion
发表于 2015-6-17 17:14:35 | 显示全部楼层
WMI          会话
发表于 2015-6-18 11:49:41 | 显示全部楼层
學習一下
正好碰到這個問題
发表于 2015-6-18 11:49:46 | 显示全部楼层
學習一下
正好碰到這個問題
 楼主| 发表于 2015-6-18 13:24:35 | 显示全部楼层
回复 3# 502762378


    WMI  会话?什么意思?能说具体点么?
 楼主| 发表于 2015-6-18 13:27:40 | 显示全部楼层
回复 2# ila


    我搜索了下,有个_Net_Share_SessionGetInfo定义函数,我尝试写了一下,无法获取信息~
发表于 2015-6-19 08:08:12 | 显示全部楼层
回复  ila


    我搜索了下,有个_Net_Share_SessionGetInfo定义函数,我尝试写了一下,无法获取信息~
ppaiyy520 发表于 2015-6-18 13:27



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

百度部分资料:
Net Session

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

键入不带参数的 net session 可以显示所有与本地计算机的会话的信息。
\computername
标识要列出或断开会话的计算机。
/delete
结束与 \computername 计算机会话并关闭本次会话期间计算机的所有打开文件。如果省略
\computername 参数,将取消与本地计算机的所有会话。
发表于 2015-6-23 00:11:07 | 显示全部楼层
接着8楼,给个图,现在还没测试多台访问,所以楼主自己测试一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2015-6-26 09:00:47 | 显示全部楼层
看看是什么效果~
 楼主| 发表于 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[0][0])
        For $iI = 1 To $aInfo[0][0]
                MemoWrite("Connection ID ...........: " & $aInfo[$iI][0])
                MemoWrite("Connection type..........: " & _Net_Share_ResourceStr($aInfo[$iI][1]))
                MemoWrite("Number of files open ....: " & $aInfo[$iI][2])
                MemoWrite("Number of users .........: " & $aInfo[$iI][3])
                MemoWrite("Connection time .........: " & $aInfo[$iI][4])
                MemoWrite("User name ...............: " & $aInfo[$iI][5])
                MemoWrite("Computer name ...........: " & $aInfo[$iI][6])
                ;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

       
各位大侠帮忙看看如何解决?谢谢~~
发表于 2015-7-13 22:11:13 | 显示全部楼层
_Net_Share_SessionGetInfo
发表于 2015-7-15 20:40:23 | 显示全部楼层
本帖最后由 luren666 于 2015-7-15 20:42 编辑

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

还有,个人感觉最好把_FileCreate  换成 FileOpen 。
 楼主| 发表于 2015-7-20 15:36:03 | 显示全部楼层
回复 13# luren666


    因为我需要每天产生的log都要保存下来的。。。
发表于 2015-7-20 18:20:39 | 显示全部楼层
让你把_FileCreate 放到Example() 前面是因为,你每次_FileCreate 都创建了一个新文件,把之前的文件覆盖掉了,所以你的日志文件里面只有最后一行。

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

还有不用一直写日志文件,可以把第一次取得的结果保存到文件,另外存一个副本到变量里面,然后判断本次取得的结果和上次的结果是否一样,如果不一样,则写入到文件,如果一样就没必要一直往文件里面写了,毕竟一直往里面写重复的内容没有意义,而且会使日志文件越来越大。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 16:58 , Processed in 0.084114 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表