我想用C#程序扩展当前的PATH变量.我有几个问题:
使用GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine)替换占位符(即'%SystemRoot%\system32'由当前路径替换'C:\Windows\system32').更新PATH变量,我不想用路径替换占位符.
之后SetEnvironmentVariable无法再从命令框中打开任何程序(即命令框中的calc.exe不起作用).我使用以下代码:
String oldPath = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("PATH", oldPath + ";%MYDIR%", EnvironmentVariableTarget.Machine);
Run Code Online (Sandbox Code Playgroud)
在PATH使用Windows 编辑和更改变量后,一切都可以正常工作.(我需要更改内容,否则不会覆盖)
我的程序作为服务或控制台运行.我创建了一个System.Threading.Mutex,只启动两种模式中的一种.在这里我的代码
public class MyServer
{
// Private variable
System.Threading.Mutex serverMutex;
public MyServer ()
{
bool createdNew;
ServerMutex = new System.Threading.Mutex(true, "MyServerMutex", out createdNew);
if (!createdNew)
{
throw new Exception("Another server instance is running");
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先启动控制台,然后启动另一个控制台,抛出异常.首先启动服务,控制台不会抛出异常.首先启动控制台,然后服务是相同的.
有任何想法吗?我想知道,因为我认为,几个月前,当我实现该功能时,它已经全部工作了.
我正在使用.NET 4.0.
谢谢,弗雷迪