根据安装文件夹更改权限

时间:2014-08-17 08:50:00

标签: windows winforms installation manifest uac

我的Windows窗体有问题。 我为此创建了一个安装项目。 当我在c:\program files文件夹中安装我的应用程序时,因为UAC,当我双击时我的应用程序不会运行。 所以,我安装在C:\文件夹中,它的工作原理。 如果我想在C:\program files中完成这项工作,我需要创建清单并将其与

相关联
requestedExecutionLevel  level="requireAdministrator" uiAccess="false"

requestedExecutionLevel  level="highestAvailable" uiAccess="false"

但是每次打开我的应用程序时都会以这种方式显示带有“未知发布者...”的窗口,我需要单击“确定”。

我希望当应用程序安装在UAC工作的文件夹中时,我必须像以前一样使用带有权限的清单,但是如果我的安装文件夹是C:\(UAC不起作用)我不喜欢不希望窗户出现“未知出版商......”;在这种情况下,我需要使用嵌入式清单和默认设置。

1 个答案:

答案 0 :(得分:2)

requireAdministrator级别是您要放入安装程序清单中的级别。这将使您能够在磁盘上的任何位置安装应用程序,无论是在Program Files文件夹中还是在根目录中(不知道为什么要这样做),因为管理员已阅读/写访问所有这些位置。

但是,请注意您要将其添加到 安装程序 的应用程序清单中,而不是您的应用程序。您只需要在安装期间 这些额外的权限,而不是在正常执行应用程序期间。因此,只有在运行设置向导时才会提示您,而不是每次启动应用程序时都会提示您。安装完成后,用户不需要对应用程序目录进行读/写访问 - 只需进行只读访问。

但是,您仍会在UAC对话框中看到“未知发布者”。要解决此问题,您必须获取Authenticode证书并使用它来签署可执行文件。您可以从ComodoSymantec(以前的Verisign)或Go Daddy等人那里购买其中一种。有关代码签名的详细信息,请参阅this article。如果您打算将它们用于一般分发,我强烈建议您签署可执行文件。但是如果你不想或者不能负担(比如,它只是一个爱好项目),那么它不会伤害任何东西 - 用户只需要接受它来自一个未知的出版商。

最后,值得一提的是Windows具有特殊的兼容性行为,可以为名为“setup.exe”的安装应用程序提供支持。这些将自动以管理权限运行,并在必要时提示UAC提升。因此,即使不将此信息添加到清单中,您也应该能够使其工作,但无论如何您仍然应该这样做。