【发布时间】:2010-10-22 15:53:47
【问题描述】:
Application2 最初是为 WinXP 开发的应用程序。现在我不得不与 Win7 上的用户帐户控制 (UAC) 抗衡。只要用户登录到管理员帐户并选择“以管理员身份运行”,Application2 就可以在 Win7 上正常运行。但是,我正在尝试评估是否可以重构 Application2,使其不需要管理员帐户和“以管理员身份运行”。如果可能的话,我还想避免任何要求用户做出选择的对话框。
Application2 目前需要“以管理员身份运行”的功能
- 创建系统数据源 (ODBC)
- 读/写/删除注册表项
- 复制/删除
C:\Program Files\MyApp中的文件 - 加密/解密
C:\Program Files\MyApp中的文件 - 启动位于远程计算机上共享文件夹中的 .exe 进程
- 启动安装 Office 加载项和读取/写入/删除注册表项的 VBScript 进程
- 复制/删除/修改
C:\Program Files\MyApp\MyData中的文件
可以通过将此文件夹重新定位到我的文档(其位置存储在注册表中*),或授予用户“完全控制”权限C:\Program Files\MyApp\MyData,或让 Win7 在 VirtualStore 中进行必要的修改来解决第 6 个问题文件夹。
数字 3 和 4 更难处理,因为 Application1 必须读取 C:\Program Files\MyApp 中的文件。 Application1 不会使用“以管理员身份运行”,我需要做更多的研究来弄清楚如何使用 VirtualStore 文件夹来弥合 Application2 和 Application1.
至于其他几点,我正在尝试找出选项:
- 请告诉我是否/如何可以在非管理员用户帐户下执行这些操作,并且无需“以管理员身份运行”。
- 如果没有管理员身份无法执行任何操作,请告诉我。
- 请随时指出我在此问题的内容中可能犯的任何技术错误。
- 我再次尝试在应用程序运行时避免出现对话框。
*在这里大声思考:复制到C:\My Documents\MyData后我需要删除C:\Program Files\MyApp\MyData,并且我需要修改存储文件夹路径的注册表项,也许这些步骤可以在安装过程中完成。
发现
在 Windows 7 上,即使 没有“以管理员身份运行”,您也可以:
- 创建/删除用户数据源
- 在
C:\Users\Public\Documents或C:\Users\currentuser\Documents中创建/修改/删除文件 - 在
HKEY_CURRENT_USER中创建/删除注册表项
此外,我认为没有 UAC 应用程序清单文件的 Windows 7 应用程序是危险的。因为,如果您没有,Windows 7 会为您决定是否在兼容模式下运行该应用程序。如果您有,您可以指定您的应用程序需要如何运行。
【问题讨论】: