ruby を使用して Windows 7 の system32 ディレクトリ内のすべてのファイルを印刷すると、一部のファイルが欠落します。この単純なディレクトリ反復を使用します。
Dir.foreach("C:\\Windows\\System32") do |fname|
puts fname
end
存在しますが、印刷されていないpython27.dllを特に探しています。ファイルが存在しています?dir 反復と同じ問題があるようです。既存のファイルに対して false を返します。
File.exists? "C:\\Windows\\System32\\python27.dll" #returns false
フォルダーの別の既存のファイルを確認すると、次のように機能します。
File.exists? "C:\\Windows\\System32\\quartz.dll" #returns true
しかし、既存のファイルを複製したり、system32 で新しいファイルを作成したりしても機能しません。
File.exists? "C:\\Windows\\System32\\quartz2.dll" #returns false
また、python27.dll を別のディレクトリにコピーして存在を確認すると、次のように動作します。
File.exists? "C:\\Otherfolder\\python27.dll" #returns true
この問題は、大文字と小文字またはパス区切り文字とは関係ありません。私はそれをチェックしました。また、機能するファイルと機能しないファイルのユーザー権限に違いは見られません...
なぜこれが起こるのか、私には本当にわかりません...誰でもこれを再現できますか???
ありがとう
[編集]
少し時間がかかりましたが、答えが見つかりました。
これは 32/64 ビットの問題でした。32ビットアプリケーションとしてのrubyの場合、「C:\Windows\System32」は実際には「C:\Windows\SysWOW64」です。64 ビットの WinExplorer が示したように、python27.dll は System32 にありました (64 ビットのプロセスだけが見ることができます - まあ、紛らわしいです)。Pythonの32ビットバージョンをインストールすると、問題が解決しました(rubypythonの一部であるため、rubyスクリプトを変更できなかったため)。