我正在使用Windows 7和Microsoft Visual Studio 2010.如果文件的名称包含“update”,Windows会强制UAC提升文件?
我创建了一个简单的项目,其中一个MessageBox()
调用WinMain()
。该项目的名称是"update"
,所以EXE文件的名称是update.exe
。我在链接器设置中关闭了清单生成。但是当我尝试在Visual Studio中开始调试时,它说我的应用程序需要提升。
我决定通过在Windows资源管理器中单击它来启动应用程序,但它仍然需要管理员权限。我将它重命名为update12345.exe
和12345update12345.exe
,但它仍然需要提升。
但是,当我将其重命名为12345.exe
时,它在没有请求管理员权限的情况下完美运行!我认为Windows需要提升所有名称包含"update"
子字符的文件。因此,我从SysInternals DebugView中取出另一个文件(debugview.exe
),并将其重命名为update.exe
- 但它没有提升。
这种奇怪行为的原因是什么?
您没有正确构建程序,它缺少声明它意识到UAC的清单。这对于Visual Studio来说很难做到,通过使用项目模板来开始您的项目,落在成功的大坑里。 –
我一直开发没有清单的项目,他们完美地工作。我的项目设计为可在任何Windows系统上运行,并且不需要任何需要UAC的任何操作。但麻烦在于文件名:如果它包含“更新”,它需要UAC,否则它启动并且完美地工作。 – deselect
Hmya,他们完美地工作,直到你碰到某种类型的墙。像这个。当你在注册表中进行访问并在禁止访问的地方访问文件时,你会有更多惊喜。清单的存在对旧版Windows不具有任何作用,但不知道它们的含义。 –