4

Windows 7 を実行している富士通タブレットで C# .NET WPF アプリケーションを実行しており、ユーザーの AppData フォルダーにインストールされている SQL Server CE 3.5 データベースにアクセスしています。このアプリケーションは、同じタイプの他のタブレット、および通常のラップトップまたはデスクトップ PC でも正しく動作します。

アプリケーションを特定のタブレットで実行すると、次のエラーが表示されます。

The file resolves to a path that is too long. The maximum length is 260 characters 
[File name = c:\Users\tester\AppData\Roaming\Fourmative\AppDatabase\MyDatabase#1.sdf]

ここで、Windows パス名の制限と最大長が 260 文字であることについて読みました。ただし、ご覧のとおり、このパスの長さはわずか 72 文字です。

また、アプリケーションはインストーラーの一部としてユーザーの AppData フォルダーにインストールされるため、このパスが正確に指すユーザー マシンを実際に制御することはできません。

これは、実際のパスが実際に示されているパスから何らかの形でマップされていることを意味するに違いないと思いますか? したがって、私の質問は、この問題を実際に修正する方法を判断できるように、コマンド ラインから実際のフル パス (260 文字でなければならないパス) を見つけるにはどうすればよいかということです。

4

2 に答える 2

3

Windows パスは無制限ですが、別の構文を使用する必要があります。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspxから:

Windows API には、最大合計パス長 32,767 文字の拡張長パスを許可する Unicode バージョンもある多くの関数があります。このタイプのパスは、バックスラッシュで区切られたコンポーネントで構成され、それぞれが GetVolumeInformation 関数の lpMaximumComponentLength パラメータで返される値までです (この値は通常 255 文字です)。拡張パスを指定するには、「\?\」プレフィックスを使用します。たとえば、「\?\D:\非常に長いパス」です。

于 2012-09-15T08:40:42.417 に答える
-1

「MyDatabase#1.sdf」が有効なファイル名かどうかわかりません。# が有効な文字であるとは思えません。問題の原因である可能性があります...

于 2012-09-15T10:04:31.400 に答える