C# 在不使用UAC的情况下使用C在Windows7中安装应用程序#

C# 在不使用UAC的情况下使用C在Windows7中安装应用程序#,c#,uac,C#,Uac,当我在Windows7中安装我的C#应用程序时,UAC总是显示。我没有以管理员身份登录,但我希望我的应用程序安装时没有UAC。 你能告诉我怎么做吗?单包创作 您需要使用/使此安装按您要求的方式进行。如果要安装不带UAC的应用程序,则只能触摸当前登录用户可以写入的文件夹。Google Chrome做到了这一点——它将整个应用程序安装到用户的本地应用程序数据文件夹中 这是非常不标准的,我认为MS应该禁止从这个位置运行代码,但这是一个要求管理员/UAC访问才能安装应用程序的有效解决方案 顺便说一句,G

当我在Windows7中安装我的C#应用程序时,UAC总是显示。我没有以管理员身份登录,但我希望我的应用程序安装时没有UAC。
你能告诉我怎么做吗?

单包创作


您需要使用/使此安装按您要求的方式进行。

如果要安装不带UAC的应用程序,则只能触摸当前登录用户可以写入的文件夹。Google Chrome做到了这一点——它将整个应用程序安装到用户的本地应用程序数据文件夹中

这是非常不标准的,我认为MS应该禁止从这个位置运行代码,但这是一个要求管理员/UAC访问才能安装应用程序的有效解决方案


顺便说一句,Google Chrome最近提供了一个传统的安装程序,因此一个用户可以安装它供计算机上的所有用户使用。

如果您希望在不触发UAC的情况下安装应用程序,请安装到%APPDATA%(而不是安装到%ProgramFiles%)并仅写入注册表中的HKCU配置单元(即,不要尝试写入HKLM、HKCR等)。

UAC提示符显示的原因有很多,其中没有一个是“exe中的代码调用函数X或尝试写入位置Y”。这些原因包括:

  • 该名称包含安装程序、修补程序、更新等(例如setup21.exe),并且没有清单
  • 您嵌入了一个请求requireAdministrator的清单。在VisualStudio中,您会故意这样做
  • 在请求requireAdministrator的同一文件夹中有一个外部清单(对于NewApp.exe,它将是NewApp.exe.manifest)。你也会故意这么做的
  • 您右键单击了exe,并在属性兼容性上选择提升它,或作为XPSP2运行,这对于7也会提升
  • 贵公司有人已应用组策略,要求此安装应用程序应运行提升版(不太可能)
  • 您曾经运行过它,从Windows获得一个对话框,上面说“可能工作不正常”,并同意使用“推荐设置”重试

这其中有可能吗?如果是这样,请更正它们并查看UAC提示是否消失。

我相当确定,任何对Program Files文件夹的操作都会触发UAC提示,这是出于设计考虑。不,不会。但是,如果您没有收到UAC提示,您写入程序文件的尝试将失败,访问将被拒绝。您可以在XP上创建一个Windows Installer软件包,该软件包在7/2008上运行时将符合规范。这些选项将确保它在不升级的情况下成功。他们没有说明为什么它会提升。