【发布时间】:2011-05-16 15:38:29
【问题描述】:
基本上,我有一个安装在用户计算机上的应用程序。
用户使用的是 Windows 7。 用户没有被授予管理员权限。 但是,应用程序需要能够将文件保存到它自己的 Program Files 目录中。
我想走的路是:
- 下载各种二进制文件(网络服务)。
- 将二进制文件写入临时文件夹中的文件。
- 启动控制台应用程序。 (控制台应用等待主应用关闭)
- Console App 将临时文件复制到 Program Files 目录。
- Console App 重新启动主应用程序。
- 控制台应用程序关闭。
问题是我知道 Windows 7 不允许未以管理员身份运行的应用程序写入 Program Files 目录,并且我理解原因(出于安全考虑),但由于我自己编写此应用程序,因此将其安装在机器自己,有没有办法让我的应用程序能够写入它所在的任何目录(独立于平台,因为它使用相对路径)而没有弹出框要求以管理员身份运行应用程序?不能将应用程序签名为始终以管理员身份运行吗?
事实上,我什至不需要主应用程序以管理访问权限运行。我需要控制台应用程序(复制临时文件的应用程序)才能将这些临时文件复制为永久文件。
更新:是的,这是针对自动更新应用程序的。我考虑过 ClickOnce 之类的东西,但还有一些额外的要求导致我创建自己的内部更新,主要是因为更新需要保持静默和逐个更新。有时(取决于更新的部分)应用程序需要关闭、移入文件、重新启动。其他时候,应用程序只需将文件移入并继续运行。
ClickOnce 不适合我的情况,我们的组织正在内部寻找一些东西,以便可以对其进行定制以满足我们未来的需求。
【问题讨论】:
-
为什么不能从用户/程序数据文件夹或其他允许程序写入的位置加载文件?二进制文件中有什么?数据?还是代码('插件')?
-
他正在尝试为他的应用程序进行自动更新并在更新后重新启动它,或者看起来......
-
如果您想要自动更新,那么这可能会有所帮助:codeproject.com/KB/install/DDayUpdate_Part1.aspx
-
您绝对必须拥有执行此操作的管理权限。这意味着您必须要求用户提升负责的流程。当然,这并不是什么新鲜事,它只是由 UAC 更好地执行。
-
如果说“我不会做坏事”这么简单,那么这些安全措施的意义何在?
标签: c# windows-7 file-access