网易博客关闭了,搬运一些以前的文章过来。
Windows Error Code 1219 问题的分析
最近有一个客户报过来一个问题,我们的产品没办法注册到NetAPP的filer(NetApp的存储产品的内部称谓)上了,log收过来一看,有2个error code,一个是在注册的时候调用厂商的接口返回的233错误,另外一个是和filer之间建立CIFS连接时返回的1219错误。
对于后面这个1219错误,之前也是没有遇到过,查询MSDN后发现,这个错误的发生场景是这样的:同一个机器上,如果当前存在一个CIFS连接(使用WNetAddConnection2),如果再次试图用另外一个账号来建立对同一个IP的连接,这时就会发生1219错误。(这个描述是从网络上面一些博客上拿下来的,其实不是很严谨,这也是后来我犯错误的原因)
于是我在team的测试机上面用了“net use”命令,确实可以看到连接。(其实看到的不是我们产品的连接,而是我之前用windows资源管理器打开过那个路径,在关闭以后,连接还会保持。)于是我就让前方的技术支持工程师到客户那边用命令看现存的连接了。
过了一个晚上,第二天,我又换了一台机器想用net use再看一下输出,令人诧异的是,这次什么输出都没有。(其实一开始就错了!)我想起之前遇到的一个问题,客户找不到自己map的盘符了。在windows系统中,每个帐户的盘符是独立的,比如说一个机器有2个账号A和B,A账号map了盘符E,B账号没有,你用B账号登陆就看不到这个盘符。由于我们的产品是作为service运行的,运行账号是system,需要用特殊的方法来切换,幸好微软提供了一套工具SysinternalsSuite。可以在这个链接下载到:
http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
使用方法是,先解压工具,用administrator运行cmd.exe,然后把工作目录切换到解压好的路径下,运行PSExec.exe再次启动一个cmd.exe:”psexec -i -s cmd.exe”
这个时候就已经切换到system帐户了。这时用net use就可以看到service建立的cifs 连接了。
网友评论