只有以管理员身份运行应用程序才能运行?

问题描述:

编辑:这个问题只发生在我听说的Windows 7和Vista上。只有以管理员身份运行应用程序才能运行?

我有一个非常简单的应用程序与外部图形库开发。如果我将此应用程序安装到程序文件目录并运行它,它将立即崩溃,但它通常工作正常,具有完全相同的文件。我意识到这是因为您需要以管理员身份运行该应用程序才能正常工作。

我很欣赏这是否与我使用的图形引擎直接相关,但我并不真的这么认为(但我无能为力)。谁能帮我?

编辑更多的细节:
可执行的应用程序和所需要运行该文件安装到默认程序目录 - 对我来说,C:\ Program Files文件(x86)的。如果你尝试运行而不点击以管理员身份运行,它会简单地冻结并说“应用程序已停止工作。Windows正在检查问题的解决方案...”我的问题基本上是,我该如何运行它作为管理员是没有必要的?

+0

那么是由管理员下载的图书馆,并放在其他用户看不到的目录?你有没有收到任何错误信息? – 2011-06-02 11:14:25

+0

运行它所需的应用程序可执行文件和文件被安装到默认程序目录中 - 对我来说,C:\ Program Files(x86)。如果你尝试运行时没有单击以管理员身份运行,它会简单地冻结并说“应用程序已停止工作。Windows正在检查问题的解决方案......”我的问题基本上是如何使其以管理员身份运行没有必要。 – pighead10 2011-06-02 11:17:02

+0

它使用dll吗?他们注册是否正确。您确定dll的注册表项没有指向管理员的私人目录吗? – StevieG 2011-06-02 11:21:51

当程序无法执行某个操作时,它(操作)应该会优雅地失败。我的猜测是你的应用程序试图做一些它不能像普通用户那样做的事情,然后无法检查返回代码,然后崩溃。你需要确定你的程序在做什么,它不应该像普通用户那样做。例如(把我的头顶部):

  • 写文件,程序文件(x86)
  • 写入HKLM
+0

我认为HKLM写入是针对普通用户的透明重定向。 – 2011-06-02 11:29:22

+0

是的 - 我的程序正在写入程序文件目录中的文件。谢谢 – pighead10 2011-06-02 11:30:20

+0

您应该写入ProgramData目录。例如使用'SHGetFolderPath'和'CSIDL_LOCAL_APPDATA'。至于HKLM写道,我不确定,但我认为透明重定向是用于注册表的x86部分... – Blazes 2011-06-02 11:37:25

(如果没有更多的细节)该问题最有可能与事实上,你的程序试图写入目录,然后除了文件的创建/修改实际上有效。 UAC阻止应用程序在没有管理员权限的情况下编写Program Files目录。解决方案是重新设计您的应用程序,使其不依赖于此类行为,或将相关文件存储在其中一个预期位置(AppData等文件夹)中。

如果您右键单击EXE并转到​​,有一些选项可能会有所帮助。您可以尝试在以前的Windows版本的兼容模式下运行应用程序,或者如果这样做不起作用,则至少将EXE标记为默认以管理员身份运行。