在Windows中,当我双击Windows资源管理器中的文件时会发生什么?

问题描述 投票:15回答:4

TL; DR

当用户双击或选择一个文件并从Windows资源管理器中按下Enter键时,正在执行的确切的低级内核和OS进程是什么?


详细信息

这似乎是一个很奇怪的问题,但是我很好奇从Windows资源管理器打开文件的细节。

具体地说,我想知道的是用户双击或选择文件并从Windows资源管理器中按下Enter键时正在执行的确切的低级内核和OS进程。

我问的原因是因为我有一个应用程序,允许用户基于存储在数据库中的元数据浏览和搜索文件。当用户单击我提供的Open按钮时,我将启动一个过程,其中根文件是所选文件的路径。另外,值得一提的是,这些文件位于网络共享上。

这已经工作了很多年,但是最近我的公司已经迁移到新的Active Directory服务器,现在只有极少数用户(1-2%)损坏了该应用程序。真正奇怪的是,这些用户不能从我的应用程序中打开此文件,但是他们可以浏览到该位置并从Windows资源管理器中打开它。当我的应用程序尝试打开文件时,它会收到一个非常普通的异常,指出找不到该文件。

我已经三重检查了应用程序正在使用的路径(用于多个文件),并且该路径不正确。在打开文件之前,我已经验证我的用户已经并且已经连接到这些网络驱动器。一切都已正确设置,并且应该可以运行,但是我的应用程序(或System.Process)无法“查看”或打开这些文件。

Windows资源管理器应用程序与在应用程序中使用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上找到了this question,但它不适用于/应该不适用于此问题。我的应用只是尝试打开PDF和一些工程图文件。没什么,它不需要管理员权限。另外,我认为不需要任何用户身份验证,因为大多数用户从未收到此消息,并且他们已经通过登录并浏览到网络位置在网络上进行了验证。

TL; DR]当用户双击或选择一个文件并在Windows资源管理器中按Enter键时,正在执行的确切的低级内核和OS进程是什么? ...

c# .net windows windows-explorer
4个回答
6
投票

当用户双击或选择一个文件并从Windows资源管理器中按Enter键时,正在执行的确切的低级内核和OS调用是什么?


6
投票

您的代码中存在一个非常常见的故障模式,无法正确设置ProcessStartInfo.WorkingDirectory。一部分程序依赖于Explorer将默认工作目录设置为包含该文件的目录,并且在未设置该文件时会掉线。他们会做一些不明智的事情,例如尝试在不指定完整路径名的情况下打开配置文件,只有在正确设置工作目录后才能使用。

您可以这样修复:


2
投票

您的“ TL; DR”问题很简短,但很明确,但是我不确定回答该问题是否可以解决您的问题。汉斯·帕桑特(Hans Passant)的答案可能有用得多。不过,我将尝试提供一些信息。

Windows具有多个层,在这种情况下,两个有趣的层是Windows Shell


0
投票

您可以使用Acrobat.exe尝试类似的方法吗?

file.pdf    
© www.soinside.com 2019 - 2024. All rights reserved.