原文:
C# 實現設置系統環境變量設置
以前實現系統環境變量設置時是要在電腦屬性--高級--環境變量設置,實現方式主要有2種,
- 修改注冊表,添加環境變量
- 調用系統Kernel32.DLL函數,設置環境變量
?
?
注冊表方式,是要修改注冊表的位置是[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
代碼我已經封裝,注意要引入命名空間
using
Microsoft.Win32;
using
System.Runtime.InteropServices;
如下:
class
SysEnvironment
{
/// <summary>
/// 獲取系統環境變量
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public
static
string
GetSysEnvironmentByName(
string
name)
{
string
result =
string
.Empty;
try
{
result = OpenSysEnvironment().GetValue(name).ToString();
//讀取
}
catch
(Exception)
{
return
string
.Empty;
}
return
result;
}
/// <summary>
/// 打開系統環境變量注冊表
/// </summary>
/// <returns>RegistryKey</returns>
private
static
RegistryKey OpenSysEnvironment()
{
RegistryKey regLocalMachine = Registry.LocalMachine;
RegistryKey regSYSTEM = regLocalMachine.OpenSubKey(
"SYSTEM"
,
true
);
//打開HKEY_LOCAL_MACHINE下的SYSTEM
RegistryKey regControlSet001 = regSYSTEM.OpenSubKey(
"ControlSet001"
,
true
);
//打開ControlSet001
RegistryKey regControl = regControlSet001.OpenSubKey(
"Control"
,
true
);
//打開Control
RegistryKey regManager = regControl.OpenSubKey(
"Session Manager"
,
true
);
//打開Control
RegistryKey regEnvironment = regManager.OpenSubKey(
"Environment"
,
true
);
return
regEnvironment;
}
/// <summary>
/// 設置系統環境變量
/// </summary>
/// <param name="name">變量名</param>
/// <param name="strValue">值</param>
public
static
void
SetSysEnvironment(
string
name,
string
strValue)
{
OpenSysEnvironment().SetValue(name, strValue);
}
/// <summary>
/// 檢測系統環境變量是否存在
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public
bool
CheckSysEnvironmentExist(
string
name)
{
if
(!
string
.IsNullOrEmpty(GetSysEnvironmentByName(name)))
return
true
;
else
return
false
;
}
/// <summary>
/// 添加到PATH環境變量(會檢測路徑是否存在,存在就不重復)
/// </summary>
/// <param name="strPath"></param>
public
static
void
SetPathAfter(
string
strHome)
{
string
pathlist ;
pathlist = GetSysEnvironmentByName(
"PATH"
);
//檢測是否以;結尾
if
(pathlist.Substring(pathlist.Length - 1, 1) !=
";"
)
{
SetSysEnvironment(
"PATH"
, pathlist +
";"
);
pathlist = GetSysEnvironmentByName(
"PATH"
);
}
string
[] list = pathlist.Split(
';'
);
bool
isPathExist =
false
;
foreach
(
string
item
in
list)
{
if
(item == strHome)
isPathExist =
true
;
}
if
(!isPathExist)
{
SetSysEnvironment(
"PATH"
, pathlist +strHome+
";"
);
}
}
public
static
void
SetPathBefore(
string
strHome)
{
string
pathlist;
pathlist = GetSysEnvironmentByName(
"PATH"
);
string
[] list = pathlist.Split(
';'
);
bool
isPathExist =
false
;
foreach
(
string
item
in
list)
{
if
(item == strHome)
isPathExist =
true
;
}
if
(!isPathExist)
{
SetSysEnvironment(
"PATH"
, strHome +
";"
+ pathlist);
}
}
public
static
void
SetPath(
string
strHome)
{
string
pathlist;
pathlist = GetSysEnvironmentByName(
"PATH"
);
string
[] list = pathlist.Split(
';'
);
bool
isPathExist =
false
;
foreach
(
string
item
in
list)
{
if
(item == strHome)
isPathExist =
true
;
}
if
(!isPathExist)
{
SetSysEnvironment(
"PATH"
, pathlist + strHome +
";"
);
}
}
}
?
?
Kernel32.DLL內有SetEnvironmentVariable函數用于設置系統環境變量
C#調用要用DllImport,代碼封裝如下:
class
SetSysEnvironmentVariable
{
[DllImport(
"Kernel32.DLL "
, SetLastError =
true
)]
public
static
extern
bool
SetEnvironmentVariable(
string
lpName,
string
lpValue);
public
static
void
SetPath(
string
pathValue)
{
string
pathlist;
pathlist = SysEnvironment.GetSysEnvironmentByName(
"PATH"
);
string
[] list = pathlist.Split(
';'
);
bool
isPathExist =
false
;
foreach
(
string
item
in
list)
{
if
(item == pathValue)
isPathExist =
true
;
}
if
(!isPathExist)
{
SetEnvironmentVariable(
"PATH"
, pathlist + pathValue+
";"
);
}
}
}
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

