C# 如何防止用户使用无效的快捷方式运行应用程序?

C# 如何防止用户使用无效的快捷方式运行应用程序?,c#,.net,C#,.net,我在一个环境中工作,在这个环境中,我的部门维护着公司用户使用的各种内部应用程序,这些用户的计算机技能水平各不相同 过去我们遇到过很多问题,用户将快捷方式从一台机器复制到另一台机器,或者更糟糕的是,使用快捷方式访问其他用户通过电子邮件发送给他们的应用程序 在大多数情况下,这并不会造成任何问题。但是,我们偶尔会收到支持票证,因为有人试图在路径不正确的地方运行快捷方式,或者指向网络上的另一台机器并加载错误的文件 我们正在开发一些新的应用程序,我很想找到一种方法来防止这种情况发生 我最初的想法是找到一种

我在一个环境中工作,在这个环境中,我的部门维护着公司用户使用的各种内部应用程序,这些用户的计算机技能水平各不相同

过去我们遇到过很多问题,用户将快捷方式从一台机器复制到另一台机器,或者更糟糕的是,使用快捷方式访问其他用户通过电子邮件发送给他们的应用程序

在大多数情况下,这并不会造成任何问题。但是,我们偶尔会收到支持票证,因为有人试图在路径不正确的地方运行快捷方式,或者指向网络上的另一台机器并加载错误的文件

我们正在开发一些新的应用程序,我很想找到一种方法来防止这种情况发生

我最初的想法是找到一种方法来读取程序是如何执行的,并返回到快捷方式的位置,找出它是从哪里运行的。此时,我可以验证快捷方式和/或限制快捷方式。i、 e.以某种方式强制程序直接由exe或仅从桌面快捷方式启动。我真的不知道如何找到调用exe路径的快捷方式,但是


想法?想法?

您的实现将由您自己决定,但是一个很好的初步检查将是检查快捷方式文件的路径属性。例如,如果有人通过电子邮件向其他用户发送了快捷方式,并将其放置在桌面上,则该路径将包含发送快捷方式的人的用户,而不是当前用户。除此之外,您可以尝试:

File.Exists(shortcutPath);

您可以将这些简单规则捆绑到控制台应用程序中,该应用程序递归检查机器上的所有快捷方式,如果它们无效,则将其删除。

您的意思是要拦截/更改Explorer.exe处理.lnk快捷方式的方式?ClickOnce部署可能会有所帮助…与其说拦截/更改,不如说查看发生了什么(好的,也许是拦截?)然后基于此做出决定。或者……其他一些方法,我对想法持开放态度。“今天的编程是一场软件工程师之间的竞赛,他们努力构建更大更好的防白痴程序,而宇宙则试图生成更大更好的白痴。到目前为止,宇宙正在获胜。”-Rich Cook这可能不是答案或帮助,但似乎确实适用。这听起来更像是一个管理问题,而不是编程问题。您可以进行诊断,使程序显示其命令行、当前可执行目录以及当前工作目录(或启动工作目录)。如果这些不正确,则可能是用户使用了“无效”的快捷方式。如果您告诉用户仅使用您提供给他们的快捷方式,则可以让程序检查该快捷方式文件(人们会认为您将其放在标准位置)。