我需要将我的AWS访问密钥存储在一个私人的地方,并通过代码读取,而不是存储在其中。我正在考虑将它们存储在EnviromentVariables中,但从描述来看,不清楚它们是只保存到应用程序重新启动,还是存储在注册表中直到重写。
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.
它们是永久保存的,还是有更好的方法来拯救它们?
为当前进程创建的环境变量在进程结束时确实不存在。但是,存储在注册表中的当前用户或匹配项的环境变量将保留在那里,直到明确删除为止。
使用使用EnvironmentVariableTarget
的SetEnvironmentVariable
重载来确定变量的保存位置。EnvironmentVariableTarget
上的文档详细说明了在什么情况下保存或丢弃存储值:
Process
:"当进程终止时,操作系统会破坏该进程中的环境变量。"Machine
/User
:"当进程终止时,操作系统会销毁该进程中的环境变量。但是,注册表中的环境参数会一直存在,直到用户通过编程或操作系统工具将其删除。"
也就是说,我不相信环境变量是存储任何应该保密的访问类型的合适位置。环境变量可以由系统上的任何应用程序读取和写入,它们甚至是一个非常暴露的地方(与注册表或文件系统中隐藏的任何地方相反),因为它们可以直接用Environment
对象枚举。
windows上的每个进程都有自己的环境变量副本,在进程终止后,这些变量都会消失。但是,您可以通过某些方式修改外部环境,其中一些方法在您提供的链接上点击几下即可解释:http://msdn.microsoft.com/en-us/library/vstudio/system.environmentvariabletarget%28v=vs.90%29.aspx