2

QT の初心者からの質問: QFileInfo オブジェクトの exists() メソッドに共有ドライブのファイル パスを指定すると、すべてのバックスラッシュを別のバックスラッシュ (つまり \\10.1.2.34.56) でエスケープしても、常に false が返されます。 \dir1)。そして、はい、ディレクトリは存在します:)問題のディレクトリへのアクセス許可がないなど、ここで他の問題が発生している可能性がありますか? この問題についてご意見をお寄せいただきありがとうございます...

4

2 に答える 2

1

XP (Qt 4.7.3) では、2 つのバックスラッシュまたは 1 つのスラッシュ ('//ip/share/filepath') を使用して正しく動作するようです。

を介してファイルの URL を取得してみてくださいQFileDialog::getOpenFileName。ネイティブ ダイアログを使用するため、必要に応じてログイン/パスワードを要求する必要があります。その後、ファイルが存在することがわかった場合は、ネイティブ API (
Windows Networking ) を使用して、ネットワーク共有にプログラムで接続またはアクセスを許可することができます。QFileInfo

于 2011-09-03T15:09:39.677 に答える
0

結局のところ、私の問題はパーミッションと関係があり、バックスラッシュのエスケープとは何の関係もありませんでした。

私が継承したアプリケーションには、実際には 2 つのコンポーネントがあります。i) アプリの GUI インターフェイスを提供するウィンドウと、(ii) 実際の作業を行うウィンドウ サービスです。ウィンドウは共有ドライブを「見る」ことができました。これは、ウィンドウが実行されている Windows ユーザー ID が共有ドライブのアクセス許可を持っていたためです。一方、ローカル システムとして実行されている Windows サービスは共有ドライブを認識できませんでした。[サービス] ウィンドウを使用して、そのドライブのアクセス許可を持つユーザー ID でサービスを実行するようにサービスを変更すると、問題なく実行されました。ご返信ありがとうございます...

于 2011-09-23T15:37:53.150 に答える