İngilizce dilinde oku

Aracılığıyla paylaş


Environment.SetEnvironmentVariable Yöntem

Tanım

Ortam değişkenlerini oluşturur, değiştirir veya siler.

Aşırı Yüklemeler

SetEnvironmentVariable(String, String)

Geçerli işlemde depolanan bir ortam değişkenini oluşturur, değiştirir veya siler.

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Geçerli işlemde veya geçerli kullanıcı veya yerel makine için ayrılmış Windows işletim sistemi kayıt defteri anahtarında depolanan bir ortam değişkenini oluşturur, değiştirir veya siler.

SetEnvironmentVariable(String, String)

Kaynak:
Environment.cs
Kaynak:
Environment.cs
Kaynak:
Environment.cs

Geçerli işlemde depolanan bir ortam değişkenini oluşturur, değiştirir veya siler.

C#
public static void SetEnvironmentVariable (string variable, string value);
C#
public static void SetEnvironmentVariable (string variable, string? value);

Parametreler

variable
String

Ortam değişkeninin adı.

value
String

variableatanacak değer.

Özel durumlar

variable null.

variable sıfır uzunluklu bir dize, ilk onaltılık sıfır karakteri (0x00) veya eşittir işareti ("=") içerir.

-veya-

variable veya value uzunluğu 32.767 karakterden büyük veya buna eşittir.

-veya-

Bu işlemin yürütülmesi sırasında bir hata oluştu.

Çağıranın bu işlemi gerçekleştirmek için gerekli izni yok.

Örnekler

Aşağıdaki örnek, işlem ortamı bloğundan Test1 adlı bir ortam değişkeninin değerini almayı dener. Değişken yoksa, örnek değişkeni oluşturur ve değerini alır. Örnekte değişkenin değeri görüntülenir. Windows sistemlerinde çalışan .NET uygulamaları için, değişkenin yalnızca geçerli işlem ortamı bloğundan alınabileceğini kurmak için EnvironmentVariableTarget numaralandırmasının her üyesiyle GetEnvironmentVariables(EnvironmentVariableTarget) yöntemini de çağırır. (Unix benzeri sistemlerdeki.NET uygulamaları yalnızca işlem ortamı bloğundaki değişkenleri destekler.) Son olarak, örnek değişkeni oluşturduysa, bu değişkeni siler.

C#
using System;

public class Example
{
   public static void Main()
   {
      string value;
      bool toDelete = false;

      // Check whether the environment variable exists.
      value = Environment.GetEnvironmentVariable("Test1");
      // If necessary, create it.
      if (value == null)
      {
         Environment.SetEnvironmentVariable("Test1", "Value1");
         toDelete = true;

         // Now retrieve it.
         value = Environment.GetEnvironmentVariable("Test1");
      }
      // Display the value.
      Console.WriteLine($"Test1: {value}\n");

      // Confirm that the value can only be retrieved from the process
      // environment block if running on a Windows system.
      if (Environment.OSVersion.Platform == PlatformID.Win32NT)
      {
         Console.WriteLine("Attempting to retrieve Test1 from:");
         foreach (EnvironmentVariableTarget enumValue in
                           Enum.GetValues(typeof(EnvironmentVariableTarget))) {
            value = Environment.GetEnvironmentVariable("Test1", enumValue);
            Console.WriteLine($"   {enumValue}: {(value != null ? "found" : "not found")}");
         }
         Console.WriteLine();
      }

      // If we've created it, now delete it.
      if (toDelete) {
         Environment.SetEnvironmentVariable("Test1", null);
         // Confirm the deletion.
         if (Environment.GetEnvironmentVariable("Test1") == null)
            Console.WriteLine("Test1 has been deleted.");
      }
   }
}
// The example displays the following output if run on a Windows system:
//      Test1: Value1
//
//      Attempting to retrieve Test1 from:
//         Process: found
//         User: not found
//         Machine: not found
//
//      Test1 has been deleted.
//
// The example displays the following output if run on a Unix-based system:
//      Test1: Value1
//
//      Test1 has been deleted.

Açıklamalar

Bu yöntemi çağırmak, target bağımsız değişkeni için EnvironmentVariableTarget.Process değeriyle SetEnvironmentVariable(String, String, EnvironmentVariableTarget) aşırı yüklemesini çağırmaya eşdeğerdir.

Unix benzeri sistemlerde, SetEnvironmentVariable(String, String) yöntemine yapılan çağrıların yüklenen veya yüklenecek yerel kitaplıklar üzerinde hiçbir etkisi yoktur. (Buna karşılık, yerel kitaplıklar tarafından yapılan işlem içi ortam değişiklikleri yönetilen arayanlar tarafından görülmez.)

value bağımsız değişkeni null değilse ve variable parametresi tarafından adlandırılan ortam değişkeni yoksa, ortam değişkeni oluşturulur ve valueiçeriğini atanır. Varsa, değeri değiştirilir. Ortam değişkeni yalnızca geçerli işlemin ortam bloğunda tanımlandığından, işlem sona erdikten sonra kalıcı olmaz.

variable ilk onaltılık olmayan bir sıfır karakteri içeriyorsa, sıfır karakterden önceki karakterler ortam değişkeni adı olarak kabul edilir ve sonraki tüm karakterler yoksayılır.

value ilk onaltılık olmayan bir sıfır karakteri içeriyorsa, sıfır karakterden önceki karakterler ortam değişkenine atanır ve izleyen tüm karakterler yoksayılır.

value null (veya .NET 9'un önceki sürümlerinde boşsa) ve variable tarafından adlandırılan ortam değişkeni varsa, ortam değişkeni silinir. variable yoksa, işlem gerçekleştirilemese bile hata oluşmaz. value aşağıdaki koşullardan herhangi biri altında boş kabul edilir:

  • String.Empty.
  • Değeri U+0000 olan tek bir karakterden oluşur.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

SetEnvironmentVariable(String, String, EnvironmentVariableTarget)

Kaynak:
Environment.cs
Kaynak:
Environment.cs
Kaynak:
Environment.cs

Geçerli işlemde veya geçerli kullanıcı veya yerel makine için ayrılmış Windows işletim sistemi kayıt defteri anahtarında depolanan bir ortam değişkenini oluşturur, değiştirir veya siler.

C#
public static void SetEnvironmentVariable (string variable, string? value, EnvironmentVariableTarget target);
C#
public static void SetEnvironmentVariable (string variable, string value, EnvironmentVariableTarget target);

Parametreler

variable
String

Ortam değişkeninin adı.

value
String

variableatanacak değer.

target
EnvironmentVariableTarget

Ortam değişkeninin konumunu belirten numaralandırma değerlerinden biri.

Özel durumlar

variable null.

variable sıfır uzunluklu bir dize, ilk onaltılık sıfır karakteri (0x00) veya eşittir işareti ("=") içerir.

-veya-

variable uzunluğu 32.767 karakterden büyük veya buna eşittir.

-veya-

target, EnvironmentVariableTarget sabit listesi üyesi değildir.

-veya-

target Machine veya Userve variable uzunluğu 255'ten büyük veya buna eşittir.

-veya-

target Process ve value uzunluğu 32.767 karakterden büyük veya buna eşittir.

-veya-

Bu işlemin yürütülmesi sırasında bir hata oluştu.

Çağıranın bu işlemi gerçekleştirmek için gerekli izni yok.

Örnekler

Aşağıdaki örnek, EnvironmentVariableTarget.Process, EnvironmentVariableTarget.Userve Machine hedefleri için ortam değişkenleri oluşturur, işletim sistemi kayıt defterinin kullanıcı ve makine ortamı değişkenlerini içerip içermediğini denetler, ardından ortam değişkenlerini siler. Unix benzeri sistemlerde .NET kullanıcı başına ve makine başına ortam değişkenlerini desteklemediğinden, yalnızca SetEnvironmentVariable(String, String) ve SetEnvironmentVariable(String, String, EnvironmentVariableTarget) değeri EnvironmentVariableTarget.Process bir ortam değişkenini işlem ortamı bloğuna başarıyla depolar.

C#
using System;
using System.Collections;
using Microsoft.Win32;

class Sample
{
    public static void Main()
    {
        // Environment variable names for default, process, user, and machine targets.
        string defaultEnvVar = nameof(defaultEnvVar);
        string processEnvVar = nameof(processEnvVar);
        string userEnvVar = nameof(userEnvVar);
        string machineEnvVar = nameof(machineEnvVar);

        string dft = nameof(dft);
        string process = nameof(process);
        string user = nameof(user);
        string machine = nameof(machine);

        // Set the environment variable for each target.
        Console.WriteLine("Setting environment variables for each target...\n");
        // The default target (the current process).
        Environment.SetEnvironmentVariable(defaultEnvVar, dft);
        // The current process.
        Environment.SetEnvironmentVariable(processEnvVar, process,
                                           EnvironmentVariableTarget.Process);
        // The current user.
        Environment.SetEnvironmentVariable(userEnvVar, user,
                                           EnvironmentVariableTarget.User);
        // The local machine.
        Environment.SetEnvironmentVariable(machineEnvVar, machine,
                                           EnvironmentVariableTarget.Machine);

        // Define an array of environment variables.
        string[] envVars = { defaultEnvVar,processEnvVar, userEnvVar, machineEnvVar };

        // Try to get the environment variables from each target.
        // The default (no specified target).
        Console.WriteLine("Retrieving environment variables from the default target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }
        // The process block.
        Console.WriteLine("\nRetrieving environment variables from the Process target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Process) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }
        // The user block.
        Console.WriteLine("\nRetrieving environment variables from the User target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.User) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }
        // The machine block.
        Console.WriteLine("\nRetrieving environment variables from the Machine target:");
        foreach (var envVar in envVars)
        {
          var value = Environment.GetEnvironmentVariable(envVar, EnvironmentVariableTarget.Machine) ?? "(none)";
          Console.WriteLine($"   {envVar}: {value}");
        }

        // Delete the environment variable for each target.
        Console.WriteLine("\nDeleting environment variables for each target...\n");
        // The default target (the current process).
        Environment.SetEnvironmentVariable(defaultEnvVar, null);
        // The current process.
        Environment.SetEnvironmentVariable(processEnvVar, null,
                                           EnvironmentVariableTarget.Process);
        // The current user.
        Environment.SetEnvironmentVariable(userEnvVar, null,
                                           EnvironmentVariableTarget.User);
        // The local machine.
        Environment.SetEnvironmentVariable(machineEnvVar, null,
                                           EnvironmentVariableTarget.Machine);
    }
}
// The example displays the following output if run on a Windows system:
//      Setting environment variables for each target...
//
//      Retrieving environment variables from the default target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: user
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Process target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: user
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the User target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: user
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Machine target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: (none)
//        machineEnvVar: machine
//
//      Deleting environment variables for each target...
//
// The example displays the following output if run on a Unix-based system:
//
//      Setting environment variables for each target...
//
//      Retrieving environment variables from the default target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Process target:
//        defaultEnvVar: dft
//        processEnvVar: process
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the User target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Retrieving environment variables from the Machine target:
//        defaultEnvVar: (none)
//        processEnvVar: (none)
//        userEnvVar: (none)
//        machineEnvVar: (none)
//
//      Deleting environment variables for each target...

Açıklamalar

SetEnvironmentVariable(String, String, EnvironmentVariableTarget) yöntemi, geçerli işlem (Process değeri) için kullanılabilen bir ortam değişkeni tanımlamanızı sağlar. Geçerli işlem ortamı bloğuna özgü ortam değişkenleri yalnızca işlem sona erene kadar kalır.

Ayrıca, yalnızca Windows sistemlerinde SetEnvironmentVariable(String, String, EnvironmentVariableTarget) yöntemi, bir makinede (EnvironmentVariableTarget.Machine değeri) ve bir kullanıcı tarafından çalıştırılan tüm işlemler için (EnvironmentVariableTarget.User değeri) kullanılabilen bir ortam değişkeni tanımlamanızı sağlar. Makine başına ve kullanıcı başına ortam değişkenleri geçerli işlemin ortam bloğuna kopyalanır.

Unix benzeri sistemlerde, EnvironmentVariableTarget.Machine veya EnvironmentVariableTarget.User değeriyle SetEnvironmentVariable(String, String, EnvironmentVariableTarget) yöntemine yapılan çağrılar yoksayılır.

Unix benzeri sistemlerde, EnvironmentVariableTarget.Process değerine sahip SetEnvironmentVariable(String, String, EnvironmentVariableTarget) yöntemine yapılan çağrıların yüklenen veya yüklenecek yerel kitaplıklar üzerinde hiçbir etkisi yoktur. (Buna karşılık, yerel kitaplıklar tarafından yapılan işlem içi ortam değişiklikleri yönetilen arayanlar tarafından görülmez.)

value bağımsız değişkeni null değilse ve variable bağımsız değişkeni tarafından adlandırılan ortam değişkeni yoksa, ortam değişkeni oluşturulur ve valueiçeriği atanır. Varsa, değeri değiştirilir.

variable ilk onaltılık olmayan bir sıfır karakteri içeriyorsa, sıfır karakterden önceki karakterler ortam değişkeni adı olarak kabul edilir ve sonraki tüm karakterler yoksayılır.

value ilk onaltılık olmayan bir sıfır karakteri içeriyorsa, sıfır karakterden önceki karakterler ortam değişkenine atanır ve izleyen tüm karakterler yoksayılır.

value null (veya .NET 9'un önceki sürümlerinde boşsa) ve variable tarafından adlandırılan ortam değişkeni varsa, ortam değişkeni silinir. value aşağıdaki koşullardan herhangi biri altında boş kabul edilir:

  • String.Empty.
  • Değeri U+0000 olan tek bir karakterden oluşur.

variable yoksa, işlem gerçekleştirilemese de hata oluşmaz. target Machineolduğunda dikkatli olun çünkü yalnızca geçerli işlemi veya kullanıcıyı değil, tüm yerel makinenizi etkileyen bir ortam değişkenini yanlışlıkla silebilirsiniz.

Windows sistemlerinde EnvironmentVariableTarget.Machine ve EnvironmentVariableTarget.User

target EnvironmentVariableTarget.Userise, ortam değişkeni yerel bilgisayarın kayıt defterinin HKEY_CURRENT_USER\Environment anahtarında depolanır. Ayrıca geçerli kullanıcı olarak çalışan Dosya Gezgini örneklerine de kopyalanır. Ortam değişkeni daha sonra kullanıcının Dosya Gezgini'nden başlattığı tüm yeni işlemler tarafından devralınır.

Benzer şekilde, targetEnvironmentVariableTarget.Machineise ortam değişkeni yerel bilgisayarın kayıt defterinin HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment anahtarında depolanır. Dosya Gezgini'nin tüm örneklerine de kopyalanır. Ortam değişkeni daha sonra Dosya Gezgini'nden başlatılan tüm yeni işlemler tarafından devralınır.

target User veya Machineise, windows WM_SETTINGCHANGE iletisiyle diğer uygulamalara küme işlemi bildirilir.

target EnvironmentVariableTarget.User veya EnvironmentVariableTarget.Machineise, value uzunluğunun 2048 karakterden kısa olmasını öneririz.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1