C#System.Diagnostics.ProcessStartInfo环境变量不区分大小写?
ProcessStartInfo.EnvironmentVariables(类型C#System.Diagnostics.ProcessStartInfo环境变量不区分大小写?,c#,variables,process,environment,C#,Variables,Process,Environment,ProcessStartInfo.EnvironmentVariables(类型StringDictionary)中的EnvironmentVariables在插入内容时总是设置为小写。例如: proc.StartInfo.EnvironmentVariables.Clear(); proc.StartInfo.EnvironmentVariables.Add("REDIRECT_STATUS", ""); // [snipped more variables being added here]
StringDictionary
)中的EnvironmentVariables在插入内容时总是设置为小写。例如:
proc.StartInfo.EnvironmentVariables.Clear();
proc.StartInfo.EnvironmentVariables.Add("REDIRECT_STATUS", "");
// [snipped more variables being added here]
proc.Start();
在这个过程中,现在有一个重定向\u状态
,而不是我想要的重定向\u状态
。这会引起问题
我已经在其他地方读到过,您可以通过创建批处理文件来解决这个问题,但是这不适用于我的情况,因为这意味着要用作CGI(此代码可能每秒调用10次)
有没有办法使
环境变量
不区分大小写,并允许我使用所有大写字母?Windows中的环境变量不区分大小写。这个变量的行为显然是基于这个事实。如果您在Windows环境中使用环境变量,这应该不会造成问题。您没有提到这是在什么平台上,它是运行在类Unix系统上的Mono应用程序吗 Windows中的环境变量不区分大小写。这个变量的行为显然是基于这个事实。如果您在Windows环境中使用环境变量,这应该不会造成问题。您没有提到这是在什么平台上,它是运行在类Unix系统上的Mono应用程序吗 嗯,请注意所有也有这个问题的人:很明显,这在4.0中得到了修复
我不得不切换到.Net 4.0来解决这个问题。嗯,请注意所有也有这个问题的人:显然,这个问题在4.0中得到了解决
我不得不切换到.Net 4.0来解决这个问题。我遇到了同样的问题并发现了这个问题。由于不想在此时将项目升级到.NET4,我找到了以下解决方法。这种解决方法依赖于StringDictionary类的内部实现,这样做通常被认为是不好的做法,但它在.NET2上完成了工作
System.Reflection.FieldInfo contentsField = typeof(System.Collections.Specialized.StringDictionary).GetField("contents", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
System.Collections.Hashtable envtable = (System.Collections.Hashtable)contentsField.GetValue(proc.StartInfo.EnvironmentVariables);
envtable.Add("REDIRECT_STATUS", "");
我遇到了同样的问题,发现了这个问题。由于不想在此时将项目升级到.NET4,我找到了以下解决方法。这种解决方法依赖于StringDictionary类的内部实现,这样做通常被认为是不好的做法,但它在.NET2上完成了工作
System.Reflection.FieldInfo contentsField = typeof(System.Collections.Specialized.StringDictionary).GetField("contents", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
System.Collections.Hashtable envtable = (System.Collections.Hashtable)contentsField.GetValue(proc.StartInfo.EnvironmentVariables);
envtable.Add("REDIRECT_STATUS", "");
这是一个Windows应用程序,但是,我调用的应用程序是PHP的CGI,如果您请求$_SERVER['SOMETHING',,它是区分大小写的。您可以控制PHP脚本吗?如果是这样的话,用getenv('FOO')替换$\u SERVER['FOO']应该可以,如果在的注释是正确的。我希望各种脚本都可以工作,所以它需要大写的环境变量。不过,谢谢你的getenv提示。我不知道。这是一个Windows应用程序,但是,我调用的应用程序是PHP的CGI,如果您请求$_SERVER['SOMETHING',],它是区分大小写的。您可以控制PHP脚本吗?如果是这样的话,用getenv('FOO')替换$\u SERVER['FOO']应该可以,如果在的注释是正确的。我希望各种脚本都可以工作,所以它需要大写的环境变量。不过,谢谢你的getenv提示。我不知道。如果你不能升级到.NET4,这个答案很好。我的答案是升级,但不管怎样,你都会得到我的支持票。美好的如果你不能升级到.NET4,这个答案很好。我的答案是升级,但不管怎样,你都会得到我的支持票。美好的