我需要写一些注册数据(唯一的计算机编号和相应的激活码)。
需要在其他程序和所有帐户中显示计算机编号({Admin | Non Admin},用户访问控制已开启{On | Off})
仅从管理员帐户编写计算机编号和激活码是可以接受的,但需要从任何其他帐户读取。
目前(我需要对此进行更多测试)似乎如果CN和激活码是用UAC关闭写的,那么当用户切换UAC时,计算机号码不可见。
答案 0 :(得分:3)
在安装期间,您可以将其写入程序的安装文件夹,因为可能以后不会更改(需要写入权限)。作为标准用户,您仍然应该具有读取权限。否则,如何运行程序? :)
或者您可以使用“所有用户应用程序数据”文件夹。在XP中,通常会映射到C:\Documents and Settings\All Users\Application Data\YourApp\
。我没有Vista在我面前,所以我暂时无法给你确切的位置,但它应该是一个非常简单的映射。
答案 1 :(得分:3)
返回的位置
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
这是Joel在他的消息中提到的相同位置,但这是获得该值的正确方法(它改变了XP和Vista之间的位置,并可能再次改变)。
(当然,这是针对.NET的。对于Win32,您希望将SHGetFolderPath
函数与CSIDL_COMMON_APPDATA一起使用)