我需要将AWS Access Keys存储在私有的地方,并通过代码读取,而不是存储在其中。我正在考虑将它们存储在EnviromentVariabels中,但是从描述中可以看出,它们是否仅在应用程序重新启动之前保留,或者存储在注册表中直到过度写入。
Creates, modifies, or deletes an environment variable stored in the current process
和
Creates, modifies, or deletes an environment variable stored in the current process or in the Windows operating system registry key reserved for the current user or local machine.
他们是否保持良好状态,甚至是否有更好的方法来拯救他们?
答案 0 :(得分:3)
当流程结束时,为当前流程创建的环境变量确实不再存在。但是,存储在注册表中的当前用户或匹配项的环境变量将保留在那里,直到被明确删除。
使用overload of SetEnvironmentVariable
that takes an EnvironmentVariableTarget
确定要保存变量的位置。 documentation on EnvironmentVariableTarget
彻底解释了在什么情况下保存或丢弃存储的值:
Process
:“当进程终止时,操作系统会破坏该进程中的环境变量。”Machine
/ User
:“当进程终止时,操作系统会破坏该进程中的环境变量。但是,注册表中的环境变量会持续存在,直到用户以编程方式或通过方式删除它操作系统工具。“也就是说,我不相信环境变量适合存储任何应该保密的访问类型。环境变量可以由系统上的任何应用程序读取和写入,它们甚至是一个暴露的地方(与注册表或文件系统中隐藏的任何地方相对)an be directly enumerated with the Environment
object。
答案 1 :(得分:1)
Windows上的每个进程都获得了自己的环境变量副本,并且在进程终止后它们都消失了。但是,您可以通过某种方式修改外部环境,只需点击几下您所提供的链接即可解释其中一些:http://msdn.microsoft.com/en-us/library/vstudio/system.environmentvariabletarget%28v=vs.90%29.aspx