在 Windows 中编译会创建一个需要超级用户模式的可执行文件
Posted
技术标签:
【中文标题】在 Windows 中编译会创建一个需要超级用户模式的可执行文件【英文标题】:compiling in windows creates an executable which requires super user mode 【发布时间】:2011-06-29 14:05:11 【问题描述】:我只是创建了一个小应用程序,它使用了一些 windows api 调用(主要是线程相关的东西)。问题是,生成的程序需要以管理员身份运行。 cmake 脚本是这样的:
project(myproject)
cmake_minimum_required(VERSION 2.8)
add_executable(myproject main.cc myproject-client.cc)
我用这个命令运行它:
cmake -G"MSYS Makefiles" .
有什么想法吗?
【问题讨论】:
当您说“需要以管理员身份运行”时,您的意思是 Windows 正在提示您并且您不知道为什么,或者除非您故意右键单击 run-as,否则它不起作用-行政?如果是后者,请提供有关“不起作用”的详细信息。 Windows 正在提示我。此外,exe图标带有盾牌符号,表示该程序需要管理员权限。 所以你的问题是“为什么会出现盾牌”,答案很可能是“因为 exe 的名称”。那叫什么名字? 1-up.exe 我还发现编译“out directory”可以解决问题。没关系,但仍然令人困惑 澄清点:CMake 不会导致可执行文件需要管理权限。问题标题的措辞方式暗示 CMake 正在这样做……事实并非如此。 【参考方案1】:您很可能曾经运行过该应用程序并被 Windows 告知“此应用程序可能未正确运行”,从而导致您计算机上某处的策略记住了“此应用程序需要升级”。关于此过程或如何撤消它的文档很少或根本没有,但重命名应用程序或将其构建到不同的路径通常会使您脱离政策。
您也可以尝试添加一个明确声明您不需要提升的清单,您将作为Invoker 运行。
【讨论】:
以上是关于在 Windows 中编译会创建一个需要超级用户模式的可执行文件的主要内容,如果未能解决你的问题,请参考以下文章
在linux上安装nginx是否会创建名为nginx或nobody的用户和用户组