【发布时间】:2019-01-22 15:09:48
【问题描述】:
我正在尝试在运行 Windows 10 企业版的戴尔笔记本电脑上运行应用程序。它是使用 Visual Studio 用 C# 编写的。该应用程序旨在以管理员权限运行。如果我手动启动应用程序,它工作得很好。当我尝试使用本地组策略编辑器自动运行它时,登录时出现以下错误:“无法启动此应用程序。”
我查看了该错误并最终访问了以下链接:https://support.microsoft.com/en-us/help/2715633/shim-errors-for-the-net-framework-version-and-platform-support。它说:“应用程序的配置方式无法确定 .NET Framework 运行时的适当版本。相应的 shim 代码是 SHIM_NOVERSION_FOUND。”
我使用此处找到的信息:https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed 来确定目标设备上安装了哪些 .NET 框架。有一些,包括 4.0 版。
我使用以下链接中的说明向我的项目添加了一个配置文件:https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-configure-an-app-to-support-net-framework-4-or-4-5。
当我重建项目并尝试在目标机器上运行它时,我得到了和以前一样的错误。
注意:目标计算机处于可能会或可能不会影响应用程序的组策略下。我们不知道。
【问题讨论】:
-
你的目标是什么框架,你的 app.config 是什么样的?
-
“以管理员权限运行”肯定是问题所在。您无法在启动时使用 UAC 同意对话框提示用户,他将不知道提示出现的原因。所以这被操作系统积极抑制。唯一的解决方法是使用两个应用程序,一个可以自动启动,一个按钮可以启动第二个应用程序,从而触发同意对话框。或计划的任务或服务。
-
该应用程序用于注销笔记本电脑。这并不是要征求用户的许可,尽管我仍在弄清楚那部分。默认情况下它应该具有管理员权限,而无需询问用户。如果他们不输入他们的姓名,它会将他们从 Windows 中注销。该应用程序还通过注册表阻止访问任务管理器。
-
这有关系吗?如果我让它正常工作,这样用户就不会遇到 UAC 对话框,那会解决问题吗?还是我还需要从另一个应用程序启动它?
-
如汉斯所说,通过任务调度器设置启动。
标签: c# .net windows visual-studio group-policy