お世話になっております。
Mozillaアプリケーションのアドオンを作成しています(Windows 7 professional で開発)
Windowsファイル共有フォルダ (\fileserver\folder) があり、file://fileserver/folder/filename と指定して共有フォルダ内のファイルに XULRunner 上の JavaScript からアクセスしようとしてます。
js
1// 例 2let ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); 3let fph = ios.getProtocolHandler('file').QueryInterface(Components.interfaces.nsIFileProtocolHandler); 4let f1 = fph.getFileFromURLSpec("file://c:/windows/system32/"); 5let f2 = fph.getFileFromURLSpec("file://fileserver/folder/");
上記コードで、f1 はエラーにならずに nsIFile オブジェクトを取得できるのですが、f2 はエラーになります。
例外の内容は
"Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH) [nsIFileProtocolHandler.getFileFromURLSpec]" (String)
です。
ちなみに、file://fileserver/folder/ を InternetExplorer のアドレスへ入れると移動できます(=存在するパスです)。
このエラーの原因は何なのでしょうか?
上記コードの結果から、ドライブパスから指定する方法でないと UNRECOGNIZED_PATH になってしまうように考えられるのですが(file://localhost/c$/windows/system32/ もだめでした)、何か別の手順が必要だったりするのでしょうか?
ちなみに、次のコードのように nsIFile オブジェクトを生成してUNCでパス指定をする方法は(リモートフォルダであっても)成功します。しかしこれは windows だから成功したことであって、Linux や Macintosh 上の Mozilla アプリケーションでは失敗するでしょう。
js
1let f = Components.classes["@mozilla.org/file/local;1"] 2 .createInstance(Components.interfaces.nsIFile); 3f.initWithPath("\\\\fileserver\\folder\\");
ご存知の方、ご教示のほどお願い致します。

あなたの回答
tips
プレビュー