我正在尝试向Path
环境variables添加一个值,但似乎无法使其工作。 我已经经历了几个类似的问题,我很确定我有完全相同的代码,但仍然不会添加该variables, 或者我看不到它。 我已经检查了pipe理员和本地用户帐户的更改。 我在运行(debugging)应用程序的过程中和之后都检查过。 我也完全closuresVS2013,并检查。
这是我正在使用的代码
string path = @"C:\Users\bono\Documents\Visual Studio 2013\Projects\3D-Scanner\AddEnviromentToPath\bin\Debug\AddEnviromentToPath.exe"; ProcessStartInfo process_start_info = new ProcessStartInfo(); process_start_info.FileName = path; process_start_info.Verb = "runas"; process_start_info.WindowStyle = ProcessWindowStyle.Normal; process_start_info.UseShellExecute = true; process_start_info.Arguments = PATH_TO_PCL; Process.Start(process_start_info); //Process that handles the adding of the value
AddEnviromentToPath
程序:
class Program { static void Main(string[] args) { //Just to make sure we're adding both AddToEnvironmentPath(args[0], EnvironmentVariableTarget.User); AddToEnvironmentPath(args[0], EnvironmentVariableTarget.Machine); } static void AddToEnvironmentPath(string pathComponent, EnvironmentVariableTarget target) { string targetPath = System.Environment.GetEnvironmentVariable("Path", target) ?? string.Empty; if (!string.IsNullOrEmpty(targetPath) && !targetPath.EndsWith(";")) { targetPath = targetPath + ';'; } targetPath = targetPath + pathComponent; Environment.SetEnvironmentVariable("Path", targetPath, target); } }
请注意,我正在运行VS2013和作为标准用户的主要应用程序。 当AddEnviromentToPath
程序运行时,我得到一个pipe理员validation面板。 我使用pipe理员帐户在这里login。
编辑:
其他人似乎使用基本相同的代码工作:
如何获取和设置C#中的环境variables?
环境没有在使用c#的窗口中设置。 我哪里错了?
假设Environment.SetEnvironmentVariable
在后台调用Win32的SetEnvironmentVariable
函数,这个注释可能是适用的:
设置当前进程的指定环境变量的内容
…
此函数对系统环境变量或其他进程的环境变量没有影响。
如果要更改全局环境变量并让现有进程注意到它,则需要:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
下的注册表中 WM_SETTINGCHANGE
消息通知现有的更改过程。 有关更多信息,请参阅MSDN 环境变量文档。
ProcessStartInfo
来拯救!
你需要检查这个文件:
解决您的担忧的关键文字:
虽然不能设置EnvironmentVariables属性,但可以修改属性返回的StringDictionary。