Avatar billede akilleuz Nybegynder
29. juni 2010 - 16:21 Der er 5 kommentarer

Environment Variables

Hej,

Jeg vil meget gerne ændre i PATH variablen inde fra C#, men synes ikke helt at det vil lykkeds.

%systemroot%\system32;%systemroot%;%systemroot%\system32\wbem;C:\Program Files\Intel\Compiler\Fortran\10.1.021\IA32\Bin;C:\Program Files\MATLAB\R2009bSP1\bin;C:\Program Files\MATLAB\R2006b\bin;C:\Program Files\MATLAB\R2006b\bin\win32;

Det jeg gerne vil er at slette det der er markeret med FED[\b] indsætte det i slutningen af PATH og opdateret variablen.

%systemroot%\system32;%systemroot%;%systemroot%\system32\wbem;C:\Program Files\MATLAB\R2009bSP1\bin;C:\Program Files\MATLAB\R2006b\bin;C:\Program Files\MATLAB\R2006b\bin\win32;;[b]C:\Program Files\Intel\Compiler\Fortran\10.1.021\IA32\Bin;
Avatar billede Syska Mester
29. juni 2010 - 23:45 #1
Eneste jeg kom frem til ... er at du skal rode med Windows RegDB, der skulle den path gerne stå ... og så med .NET kan man jo tilgå den ... og overskrive, hvis man har rettigheder til det.
Avatar billede akilleuz Nybegynder
30. juni 2010 - 09:04 #2
Jeg kan sagten tilgå og overskrive andre variabler. Men det jeg ønsker i #1 kan jeg ikek få til at virke. Til at tilføje og tjekke andre variabler, der kun indeholder en key bruger jeg følgende, som virker fint:

//VS80COMNTOOLS
        EnVar = VS80COMNTOOLS;
        EnvarName = "VS80COMNTOOLS";
        EnVal = "C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools";

        Console.WriteLine("Found in: " + EnvarName + " = " + EnVar);

        b = EnVar.Equals(EnVal, StringComparison.OrdinalIgnoreCase);
        if (b)
        {
            Console.WriteLine("This Variable is correct");
            Console.WriteLine("");
        }
        else if (EnVar != EnVal)
        {
            Console.WriteLine(EnvarName + " is not correct and will be changed!");
            Console.WriteLine("If any value in " + EnvarName + " it will be deleted! and Replaced with: " + EnvarName);
            Temp = System.Environment.GetEnvironmentVariable(EnvarName);
            DelString = Temp.Replace(Temp, "");
            //SHOW CORRECT STRING

            System.Environment.SetEnvironmentVariable(EnvarName, DelString, EnvironmentVariableTarget.Machine);
            Temp = System.Environment.GetEnvironmentVariable(EnvarName);
            //Console.WriteLine("New value in " + EnvarName + " is: " + Temp);

            System.Environment.SetEnvironmentVariable(EnvarName, EnVal, EnvironmentVariableTarget.Machine);
            Temp = System.Environment.GetEnvironmentVariable(EnvarName);
            //Console.WriteLine("New value in " + EnvarName + " is: " + Temp);
        }
Avatar billede akilleuz Nybegynder
30. juni 2010 - 13:42 #3
Nu har jeg fået den til at gøre det jeg vil i PATH, MEN..

Følgende ændrig sker, kan man gøre noget ved det?
%systemroot%\system32;  %systemroot%;  %systemroot%\system32\
C:\Windows\  system32;  C:\Windows;      C:\Windows\system32
Avatar billede Syska Mester
03. juli 2010 - 00:53 #4
say woot? Hvad siger du sker?
Avatar billede windcape Praktikant
03. juli 2010 - 03:39 #5
Ville nok bruge noget mere "clean" kode. Her er et eksempel:

var path = Environment.GetEnvironmentVariable("PATH");
var variables = path.Split(new char[] { ';' },
    StringSplitOptions.RemoveEmptyEntries).ToList();

string key = @"C:\Program Files (x86)\MiKTeX 2.8\miktex\bin";
if (variables.Remove(key))
{
    variables.Add(key);

    var result = new StringBuilder();
    foreach(var v in variables)
    {
        result.AppendFormat("{0};", v);
    }
    string s = result.ToString();
    Environment.SetEnvironmentVariable("PATH", result.ToString());                                                         
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester