でぐちや技術ブログ

技術系のブログです。

WNetAddConnection2 にてエラー

C#で作っているプログラムで、共有フォルダにファイルを出力する処理があり、WNetAddConnection2 APIを使用して認証を行っていたが急に共有フォルダにアクセスできなくなって調査したのでそのメモです。

サーバーの再起動を行ったら接続できなくなった

Windows Server上のIISで動かしているプログラムで、メンテナンスのためにサーバーを再起動したら共有フォルダへのアクセス処理でこけるようになってしまっていた。

ログなどを追いかけて調べてみるとWNetAddConnection2 API を利用している箇所で1326のエラーが出ていた。

ユーザ名の指定方法がマズかった

ググると一発で出てきた。

WNetAddConnection2 API 、WNetAddConnection3 API の lpUsername パラメータの指定方法について – JAPAN Platform SDK(Windows SDK) Support Team Blog

この際に良く目にするのは、lpUsername パラメータに指定するユーザー名に不足があるケースです。例えば、”testuser” のようにユーザー名だけを指定してはいないでしょうか。 もし、上記のように指定している場合は、”a-domain\testuser”、”server1\testuser”、”169.254.10.10\testuser” のように接続を確立する際のユーザーの所属を明示的に設定して、現象が回避できるかをお試しください。

上記の通り、IPアドレスで所属を指定したところうまくいった。

再起動前までは問題なくユーザ名だけの指定で動いていたのでイマイチ納得がいかないが、その辺りはまたおいおい調べてみたいと思う。