Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#System.Diagnostics.ProcessStartInfo环境变量不区分大小写?_C#_Variables_Process_Environment - Fatal编程技术网

C#System.Diagnostics.ProcessStartInfo环境变量不区分大小写?

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]

ProcessStartInfo.EnvironmentVariables(类型
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,这个答案很好。我的答案是升级,但不管怎样,你都会得到我的支持票。美好的