1

我需要将我的 AWS 访问密钥存储在私有位置,并通过代码读取,而不是存储在其中。我正在考虑将它们存储在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.

它们是否被永久保存,或者甚至有更好的方法来保存它们?

4

2 回答 2

3

为当前进程创建的环境变量在进程结束时确实不复存在。但是,为当前用户或匹配项存储在注册表中的环境变量将保留在那里,直到显式删除。

使用that的重载SetEnvironmentVariableEnvironmentVariableTarget来确定你的变量将被保存在哪里。上的文档EnvironmentVariableTarget彻底解释了在什么情况下保留或丢弃存储的值:

  • Process:“当进程终止时,操作系统会破坏该进程中的环境变量。”
  • Machine/ User:“当进程终止时,操作系统会破坏该进程中的环境变量。但是,注册表中的环境变量会一直存在,直到用户以编程方式或通过操作系统工具将其删除。”

也就是说,我不相信环境变量适合存储任何应该保持私有的访问类型。环境变量可以被系统上的任何应用程序读取和写入,它们甚至是一个相当暴露的地方(与隐藏在注册表或文件系统中的任何地方相反),因为它们可以直接与Environmentobject一起枚举。

于 2013-08-04T13:56:16.510 回答
1

Windows 上的每个进程都有自己的环境变量副本,并且在进程终止后它们都消失了。但是,您可以通过某些方式修改外部环境,其中一些在您提供的链接中单击几下即可解释:http: //msdn.microsoft.com/en-us/library/vstudio/system.environmentvariabletarget %28v=vs.90%29.aspx

于 2013-08-04T13:55:36.197 回答