TL; DRWindowsでは、エクスプローラでファイルをダブルクリックすると明示的に何が起こりますか?
は、ユーザーのいずれかをダブルクリックするか、ファイルを選択し、Windowsエクスプローラ内からEnter
キーを押したときに実行されている正確な、低レベルのカーネル& OSコールは何ですか?
詳細
これはかなり奇妙な質問のように思えるかもしれないが、私は、Windowsエクスプローラからファイルを開くのに非常に「核心ザラザラ」の詳細について興味があります。
具体的には、ユーザーがファイルをダブルクリックまたは選択してWindowsエクスプローラ内からEnter
キーを押したときに実行される正確な低レベルカーネル& OSコールです。
私が尋ねる理由は、ユーザーがデータベースに格納されているメタデータに基づいてファイルをブラウズして検索できるアプリケーションがあるからです。ユーザーが提供したOpen
ボタンをクリックすると、ルートファイルが選択されたファイルへのパスであるプロセスが開始されます。また、これらのファイルはネットワーク共有上にあることに言及する価値があります。
これは長年働いていましたが、最近私の会社は新しいActive Directoryサーバーに移行し、非常に少数のユーザー(1-2%)でアプリケーションが壊れています。本当に奇妙なことは、ユーザーはアプリケーションからこのファイルを開くことはできませんが、Windowsエクスプローラから場所を参照して開くことができます。アプリケーションがファイルを開こうとすると、ファイルが見つからないという非常に一般的な例外が発生します。
アプリケーションが使用しているパス(複数のファイル)がトリプルチェックされていて、パスが間違っていません。ファイルを開く前に、ユーザーがこれらのネットワークドライブに接続していることを確認しました。すべてが正しくセットアップされていますが、私のアプリケーション(またはSystem.Process
)はこれらのファイルを "見る"ことができません。
アプリケーション内でSystem.Process
を使用するのとは異なる方法でWindowsエクスプローラのアプリケーションとは何ですか?
応答する前にコードを持っている必要がある人は、私がファイルを開くために使用する非常に簡潔なコードです。繰り返しますが、これは何年も働いていて、わかっているように、Windowsに.Netの中からファイルを開く方法です。
//From within my Button-Click Event...
string file = e.Cell.Value.ToString();
try
{
Process p = new Process();
p.StartInfo.FileName = file;
p.StartInfo.Verb = "Open";
p.Start();
}
catch (Exception ex)
{
MessageBox.Show("A problem has occurred while trying to open the doccument."
+ "Please make sure that the file below exists and that you have permission "
+ "to view it."
+ Environment.NewLine + Environment.NewLine
+ file
+ Environment.NewLine + "---------------" + Environment.NewLine +
ex.Message
);
//ex.Message states "The system cannot find the file specified"
}
もう一つ。私はthis questionを見つけましたが、この質問には適用されません。私のアプリは単にPDFといくつかのエンジニアリング図面ファイルを開こうとしているだけです。それは管理者のアクセスを必要とすべきではありません。また、ほとんどのユーザーはこのメッセージを受け取ることはなく、ネットワーク上にログインしてブラウズすることで、ネットワーク上で既に自分自身を検証しているため、ユーザー認証は必要ないと考えています。
PCレベルで失敗しているクライアント間に共通性はありますか?彼らは働いているOSとは異なるOSになっていますか? –
それは難しいです。私たちのIT部門は、AD移行の前に大規模なWindows 7移行を行っていました。新しいユーザーアカウントが与えられ、PCアップグレードの準備ができているか、予定時間に近づいた多くのユーザーには、勝利7を与えられた新しいPCが与えられました。問題を抱えて最も話しているマネージャーは、 Windows XPの場合しかし、それは過去にこのPC上で常に彼のために働いていた - 彼はちょうど新しいADドメインの新しいアカウントを使用して使用開始された。彼の許可を三重にチェックしました。彼は場所を参照してこれらのファイルを開くことができますが、私のapplはできません。 – RLH
PDFでのみ失敗しますか? Acrobatを使用していますか? Acrobatは.NETでうまく動作しません。単一の.exeファイルで、外部からは一度に1つのファイルしか開きません。それがアクティブな場合、時には応答しないこともあります。 .NETでビューをホストしようとすると、キーダウンイベントを食べるのが一番問題になります。 – Paparazzi