ChatGPT解决这个技术问题 Extra ChatGPT

Where Is Machine.Config?

I want to apply a change so That I can use Server GC settings for my C# 3.5 app - I can do that by editing the machine.config file.

The only problem is I do not know where that is.

How can I find the path of this file in a repeatable way across a number of different machines


P
Peter

32-bit

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64-bit

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

[version] should be equal to v1.0.3705, v1.1.4322, v2.0.50727 or v4.0.30319.

v3.0 and v3.5 just contain additional assemblies to v2.0.50727 so there should be no config\machine.config. v4.5.x and v4.6.x are stored inside v4.0.30319.


It's probably worth mentioning the only two [version] directories you'll find a machine.config in is v2.0.50727 and v4.0.30319, since v3.0 and v3.5 use the .NET 2.0 CLR and v4.5.x are drop in replacements so don't have their own framework directories. Oh, and if you're unlucky enough to still be using .NET 1.1 then there may be a Framework/v1.1.4322 directory.
@ScottLerch That is not true on my system. There is v1.0.3705, v1.1.4322, v2.0.50727, v3.0, v3.5, and v4.0.30319
@KevinPanko yeah, I already mentioned the caveat about 1.1 but should have also mentioned 1.0 as well... just haven't had to deal with either of those in a long time. You shouldn't find a machine.config in your v3.0 or v3.5 directories though, if you do then I have no idea why.
Remember to open .config files with a notepad being run as administrator so when you save something system does not save your changes in wrong folder based on 32 or 64 bit.
@AfshinTeymoori I'm not 100% sure but if you run notepad in non admin mode you should not be able to save any changes at all as you don't have write access to the file? (also if you run in admin or not should not change if you save in 32 or 64 bit).
K
Kevin Panko

You can run this in powershell:

[System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile

Which outputs this for .net 4:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config

Note however that this might change depending on whether .net is running as 32 or 64 bit which will result in \Framework\ or \Framework64\ respectively.


In PowerShell, you can omit the "System." and just use [Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile. (Also that is specifically the 32-bit path for .NET 4.0. 64-bit is in …\Framework64\… #pedantry)
Note that this will return 64-bit path if you're running 64-bit PowerShell.
s
sshow

In order to be absolutely sure, slap a Label on an ASP.NET page and run this code:

labelDebug.Text = System.Runtime.InteropServices.RuntimeEnvironment.SystemConfigurationFile;

I believe this will leave no doubt!


Or run this in powershell [System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
T
Timothy Khouri

It semi-depends though... mine is:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG

and

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG


A
Andrius Naruševičius

Open Windows Run command. Shortcut=> windows key + r Type "microsoft.net" - MS .Net folder opens up Open "Framework"/"Framework64" folder(based on your processor). Select specific FW version folder e.g. "v4.0.30319" Open config folder Machine.config will be available there. Cheers.


J
John Saunders

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG


H
Hosein Djadidi

In your asp.net app use this

using System.Configuration;
Response.Write(ConfigurationManager.OpenMachineConfiguration().FilePath);

Z
Zlatan

This is a late reply, but if anyone is still looking to open machine.config and view/update configs, here's an example with IIS config using powershell

$machineConfig = [System.Configuration.ConfigurationManager]::OpenMachineConfiguration()

$deployment = $machineConfig.GetSection("system.web/deployment")

$deplyment.Retail = $true

$machineconfig.save()

l
lazydeveloper

You can run this in powershell: copy & paste in power shell [System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile

mine output is: C:\Windows\Microsoft.NET\Framework\v2.0.50527\config\machine.config