TL;博士
当用户双击或选择文件并Enter
从 Windows 资源管理器中按下键时,正在执行的确切的低级内核和操作系统进程是什么?
细节
这似乎是一个相当奇怪的问题,但我很好奇从 Windows 资源管理器打开文件的细节。
具体来说,我想知道的是当用户双击或选择文件并Enter
从 Windows 资源管理器中按下键时正在执行的确切的低级内核和操作系统进程。
我问的原因是因为我有一个应用程序允许用户根据存储在数据库中的元数据浏览和搜索文件。当用户单击Open
我提供的按钮时,我会启动一个进程,其中根文件是已选择文件的路径。此外,值得一提的是,这些文件位于网络共享上。
这已经工作了多年,但是,最近我的公司已经迁移到一个新的 Active Directory 服务器,现在该应用程序对于极少数用户 (1-2%) 来说是损坏的。真正奇怪的是这些用户无法打开这个我的应用程序中的文件,但他们可以浏览到该位置并从 Windows 资源管理器中打开它。当我的应用程序尝试打开该文件时,它会收到一个非常通用的异常,指出找不到该文件。
我已经三次检查了应用程序正在使用的路径(用于多个文件)并且路径不正确。在打开文件之前,我已验证我的用户已连接到这些网络驱动器。一切都设置正确并且应该可以工作,但我的应用程序(或System.Process
)无法“看到”或打开这些文件。
Windows Explorer 应用程序的作用System.Process
与在应用程序中使用有何不同?
对于那些在回答之前必须有代码的人,这里是我用来打开文件的非常简洁的代码。同样,这已经工作了多年,据我所知,这就是让 Windows 从 .Net 中打开文件的方式。
//From 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"
}
还有一件事。我在 SO 上找到了这个问题,但它不适用于/不应该适用于这个问题。我的应用程序只是试图打开 PDF 和一些工程图文件。没什么特别的,它不应该需要管理员访问权限。此外,我认为不需要任何用户身份验证,因为大多数用户从未收到此消息,并且他们已经通过登录并浏览到网络位置在网络上验证了自己。