我需要写一些注册数据(唯一的计算机号和相应的激活码)。
计算机号需要从其他程序和所有帐户中可见({Admin|Non-Admin},用户访问控制打开{On|Off})
只从管理员帐户写入计算机号码和激活码是可以接受的,但它需要从任何其他帐户读取。
目前(我需要进一步测试),如果CN和激活码是在UAC关闭的情况下编写的,那么当用户打开UAC时,计算机号码就不可见了。
在安装期间,您可以将其写入程序的安装文件夹,因为以后可能不会更改(需要写访问权限)。作为标准用户,您仍然应该具有读取访问权限。否则,如何运行程序?:)
或者,您可以使用"所有用户应用程序数据"文件夹。在XP中,它通常映射到C:Documents and SettingsAll UsersApplication DataYourApp
。我面前没有Vista,所以我现在不能给你确切的位置,但这应该是一个非常简单的地图。
返回的位置
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
这与Joel在他的消息中提到的位置相同,但这是获得该值的正确方法(它在XP和Vista之间更改了位置,并且可能再次更改)。
(当然,这是针对.NET的。对于Win32,您希望将SHGetFolderPath
函数与CSIDL_COMMON_APPDATA一起使用)