Share via


EnvironmentManager 类

定义

用于读取和写入环境变量的类。

public ref class EnvironmentManager sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Windows.System.EnvironmentManagerContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class EnvironmentManager final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Windows.System.EnvironmentManagerContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class EnvironmentManager
Public NotInheritable Class EnvironmentManager
继承
Object Platform::Object IInspectable EnvironmentManager
属性

注解

API 添加了对环境变量的跟踪,用于干净地卸载应用编写的环境项目。 跟踪还支持在卸载应用时还原以前编写的跟踪变量。

对于打包的应用,将跟踪使用新 API 创建或修改的变量。 未使用新 API 创建或修改的变量将继续不进行跟踪。

平台可以跟踪打包应用的卸载,但对于未打包的应用,则无法跟踪卸载。 对于未打包的应用,依赖于应用自己的卸载程序来清理环境变量。 未打包的应用可以在卸载时提供自己的清理,方法是使用空字符串(或 RemoveFromPath)调用 SetEnvironmentVariable API,但这会从 PATH 变量中删除路径,不会将其还原到以前的状态。

卸载包时,会触发环境清理和还原。

  1. 应用创建的任何变量都被删除。
  2. 如果变量最初不是由应用创建的,而是上次由应用修改的,则其值将还原到另一个应用设置的最后一个值。
  3. 除使用这些 API 以外的机制进行的变量更改 (例如,用户通过 RegEdit) 进行手动更改时,将考虑在内。

注意

将变量设置为空字符串的应用会有效地删除该变量,并且不应设置任何新值。

需要注意的一些其他事项:

  • 系统不使用注册表侦听器。 因此,它知道某些内容是否已更改的唯一方法是调用方是否使用这些 API 来创建或修改变量,或者已执行此操作的应用是否已卸载。
  • 系统不会跟踪 API 外部所做的更改;并且不会跟踪未打包应用的卸载。
  • 卸载打包应用后,将删除它创建的任何变量,无论该变量在其生存期内 (跟踪或未跟踪) 进行的任何其他更改。
  • 如果未使用这些 API 创建变量,则在卸载打包的应用时不会删除该变量,而是还原该应用 (通过 API) 进行的最后一次更改。
  • 点菜应用 具有标识,但未按照安装打包应用的方式进行安装。 没有可靠的方法来检测何时卸载点菜应用。 因此,虽然将跟踪由点菜应用创建的/写入的变量,但卸载应用时不会清理该变量。

属性

AreChangesTracked

获取一个值,该值指示是否跟踪环境变量更改。

IsSupported

获取一个值,该值指示当前设备/OS 版本是否支持 EnvironmentManager

方法

AddExecutableFileExtension(String)

将指定的文件扩展名添加到 PATHEXT 环境变量的末尾。

AppendToPath(String)

将指定路径添加到 PATH 环境变量的末尾。

GetEnvironmentVariable(String)

获取当前 EnvironmentManager 范围内指定环境变量的值。

GetEnvironmentVariables()

获取当前 EnvironmentManager 范围内的环境变量的集合。

GetForMachine()

获取系统范围的 EnvironmentManager

GetForProcess()

获取范围限定为当前进程的 EnvironmentManager

GetForUser()

获取范围限定为当前用户的 EnvironmentManager

RemoveExecutableFileExtension(String)

PATHEXT 环境变量的末尾删除指定的文件扩展名。

RemoveFromPath(String)

从 PATH 环境变量的末尾删除指定的 路径

SetEnvironmentVariable(String, String)

在当前 EnvironmentManager 的范围内设置指定环境变量的值。

适用于