TL ;DR
有哪些确切的,低级别内核& os调用被执行当用户双击或选择一个文件,然后按下Enter
键从Windows资源管理器内?
Details
这段代码可能会比较奇怪的问题,但我想了解这项非常" nitty坚韧不拔" 从Windows资源管理器打开文件的详细信息。
具体而言,我想知道的是确切的,低级别内核& os调用被执行当用户双击或选择一个文件,然后按下 Enter
键从Windows资源管理器内。
之所以问是因为我休假的应用程序允许用户基于浏览并搜索文件的元数据存储在数据库中。 当用户单击 Open
按钮,我已经提供了,我启动进程在根文件的文件的路径已被选取。 另外,值得一提的是,这些文件在网络上共享。
但这已工作了年,最近我的公司现在已经被移植到新活动目录服务器和应用程序就断了很小只有少数用户( 1 2% 。) 非常奇怪一件事是这些用户不能打开此文件从我的应用程序,但可以浏览到置并在此位置Windows资源管理器。 当我的应用程序试图打开文件时,它获取一个非常普通的异常,指出找不到的文件。
我检查路径的应用程序正在使用3 遍( 对于多文件) 和路径不正确。 我确认了我个人的用户,并被连接到这些网络驱动器,然后打开文件。 一切都设置正确,应该工作,但我的应用程序( 或 System.Process
) 不能" 看见" 或打开这些文件。
有什么Windows资源管理器应用程序执行方式与使用 System.Process
从应用程序内?
对于那些必须在回答之前,下面是代码异常简洁的代码我用来打开文件。 同样,这已经工作了年,尽量打开文件我知道,就是如何让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"
}
还有一件事。 这个问题我发现 模式,使但doesnt/should不适用于这个问题。? 我的应用只是尝试打开PDF和一些工程图形文件。 没什么特别的,并且不应该需要admin访问。 另外,我不相信任何用户身份验证应该是必须的,因为网络上的大多数用户不会收到此消息然后自己已经验证通过登录并浏览到网络位置。