C++ 应用程序仅在以管理员身份运行时运行?

C++ 应用程序仅在以管理员身份运行时运行?,c++,windows-7,windows-vista,administrator,C++,Windows 7,Windows Vista,Administrator,编辑:据我所知,这个问题只发生在windows 7和vista上。 我有一个使用外部图形库开发的非常简单的应用程序。如果我将此应用程序安装到程序文件目录并运行它,它将立即崩溃,但使用完全相同的文件,它正常工作。我意识到这是因为您需要以管理员的身份运行应用程序才能正常工作 如果这是一个与我使用的图形引擎直接相关的问题,我很感激,但我真的不这么认为(但我不知道)。有人能帮我吗 编辑以获取更多详细信息: 应用程序的可执行文件和运行它所需的文件被安装到默认的程序目录中——对于我来说,是C:\Progra

编辑:据我所知,这个问题只发生在windows 7和vista上。

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

如果这是一个与我使用的图形引擎直接相关的问题,我很感激,但我真的不这么认为(但我不知道)。有人能帮我吗

编辑以获取更多详细信息:

应用程序的可执行文件和运行它所需的文件被安装到默认的程序目录中——对于我来说,是C:\ProgramFiles(x86)。如果您尝试使用而不单击“以管理员身份运行”,它将简单地冻结并说“应用程序已停止工作。Windows正在检查问题的解决方案…”我的问题基本上是,如何使其不必以管理员身份运行?

当程序无法执行某项操作时,它(该操作)应该优雅地失败。我的猜测是,您的应用程序正在尝试做一些普通用户无法做的事情,然后无法检查返回代码,然后崩溃。您需要确定您的程序正在做什么,作为普通用户它不应该做什么。例如(在我的头顶上):

  • 将文件写入程序文件(x86)
  • 致函香港海事处

(没有更多细节)问题很可能与以下事实有关:您的程序试图写入目录,然后排除文件创建/修改以实际产生效果。UAC防止应用程序在没有管理员权限的情况下写入程序文件目录。解决方案是重新设计应用程序,使其不依赖于此类行为,或将有问题的文件存储在其中一个指定位置(AppData等文件夹)。

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

那么,库是否由管理员下载并放在其他用户看不到的目录中?您是否收到任何错误消息?应用程序可执行文件和运行它所需的文件安装到默认的程序目录中-对我来说,C:\program files(x86)。如果您尝试使用而不单击“以管理员身份运行”,它将简单地冻结并说“应用程序已停止工作。Windows正在检查问题的解决方案…”我的问题基本上是如何使其不必以管理员身份运行。是否使用DLL?他们登记正确吗。你确定DLL的注册表项没有指向管理员的私有目录吗?我认为HKLM写入对普通用户来说是透明重定向的。是的-我的程序正在写入程序文件目录中的文件。感谢您应该写入ProgramData目录。e、 g.使用
SHGetFolderPath
CSIDL\u LOCAL\u APPDATA
。至于HKLM写入,我不确定,但我认为透明重定向适用于注册表的x86部分。。。