C# 通过Winform应用程序创建环境变量,速度非常慢

C# 通过Winform应用程序创建环境变量,速度非常慢,c#,winforms,environment-variables,C#,Winforms,Environment Variables,在Winform应用程序中,我创建了一些环境变量(Windows 7)。创建工作,但它是非常缓慢的,大约9秒创建一个 我使用以下代码: Environment.SetEnvironmentVariable( variableName, value, EnvironmentVariableTarget.Machine ); 是不是很奇怪 查看日志: 5/01/2012 08:22:09 : MyVar1 5/01/2012 08:22:18 : MyVar2 5/01

在Winform应用程序中,我创建了一些环境变量(Windows 7)。创建工作,但它是非常缓慢的,大约9秒创建一个

我使用以下代码:

Environment.SetEnvironmentVariable(
    variableName, 
    value, 
    EnvironmentVariableTarget.Machine
);
是不是很奇怪

查看日志:

5/01/2012 08:22:09 : MyVar1
5/01/2012 08:22:18 : MyVar2
5/01/2012 08:22:26 : MyVar3

检查您正在运行的程序,多个正在运行的程序意味着您可能会有很长的延迟,关闭您正在运行的所有应用程序(Chrome、IE、记事本等),然后运行应用程序以查看需要多长时间

for (int i = 0; i < 5; i++)
{
    stopwatch.Restart();
    Environment.SetEnvironmentVariable(
        "Variable " + i,
        i.ToString(),
        EnvironmentVariableTarget.Machine);
    Console.WriteLine(stopwatch.ElapsedMilliseconds + " Variable:" + i);
}
因此,为任何收件人提供1000毫秒(1秒)的超时来处理消息。例如,如果其中5个处理失败,您可能会有最多5秒的延迟。有关SendMessageTimeout的更多信息,请参阅


--归功于

您是否真的需要它们,还是不能将它们应用到应用程序中Settings@V4Vendetta是的,我需要它们。应用程序是一种为主应用程序设置环境(设置这些变量是作业的一部分)的安装程序。
[variableName]
[value]
的值是什么?你在日志之间做什么?一些代码可能会有帮助。我也遇到了同样的问题,于是求助于使用外部程序(在后台)来设置env变量。这是一个黑客攻击,但至少我的程序没有减慢速度(在VBA中,你不能在后台线程中运行它):
IntPtr r = Win32Native.SendMessageTimeout(
    new IntPtr(Win32Native.HWND_BROADCAST), 
    Win32Native.WM_SETTINGCHANGE, 
    IntPtr.Zero, 
    "Environment", 
    0, 
    1000, 
    IntPtr.Zero);