在做项目当中,有一项特殊的客户需求就是软件需要开机自运行,并且在运行期间不能进行关机等特定操作,需要屏蔽任务管理器和注册表等,于是自己把这些写成了通用的类,以后只要直接调用就行!
//
类名:EcanSystem
//
作用:系统设置及其他
//
作者:刘典武
//
时间:2010-12-05
using
System;
using
System.Collections.Generic;
using
System.Text;
using
Microsoft.Win32;
using
System.Diagnostics;
using
System.Runtime.InteropServices;
using
System.Windows.Forms;
using
System.Drawing;
namespace
Ecan
{
public
class
EcanSystem
{
///
<summary>
///
设置程序开机运行
///
</summary>
///
<param name="started">
是否开机运行
</param>
///
<param name="exeName">
要运行的EXE程序名称(不要拓展名)
</param>
///
<param name="path">
要运行的EXE程序路径
</param>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
runWhenStart(
bool
started,
string
exeName,
string
path)
{
RegistryKey key
=
Registry.LocalMachine.OpenSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
"
,
true
);
//
打开注册表子项
if
(key
==
null
)
//
如果该项不存在的话,则创建该子项
{
key
=
Registry.LocalMachine.CreateSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
"
);
}
if
(started
==
true
)
{
try
{
key.SetValue(exeName, path);
//
设置为开机启动
key.Close();
}
catch
{
return
false
;
}
}
else
{
try
{
key.DeleteValue(exeName);
//
取消开机启动
key.Close();
}
catch
{
return
false
;
}
}
return
true
;
}
///
<summary>
///
解禁任务管理器
///
</summary>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
enableTaskmgr()
{
RegistryKey key
=
Registry.CurrentUser.OpenSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
,
true
);
//
打开注册表子项
if
(key
==
null
)
//
如果该项不存在的话,则创建该子项
{
key
=
Registry.LocalMachine.CreateSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
);
}
try
{
key.SetValue(
"
disabletaskmgr
"
,
0
, RegistryValueKind.DWord);
key.Close();
return
true
;
}
catch
{
return
false
;
}
}
///
<summary>
///
禁用任务管理器
///
</summary>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
notEnableTaskmgr()
{
RegistryKey key
=
Registry.CurrentUser.OpenSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
,
true
);
//
打开注册表子项
if
(key
==
null
)
//
如果该项不存在的话,则创建该子项
{
key
=
Registry.LocalMachine.CreateSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
);
}
try
{
key.SetValue(
"
disabletaskmgr
"
,
1
, RegistryValueKind.DWord);
key.Close();
return
true
;
}
catch
{
return
false
;
}
}
///
<summary>
///
解禁注册表
///
</summary>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
enableRegedit()
{
RegistryKey key
=
Registry.CurrentUser.OpenSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
,
true
);
//
打开注册表子项
if
(key
==
null
)
//
如果该项不存在的话,则创建该子项
{
key
=
Registry.LocalMachine.CreateSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
);
}
try
{
key.SetValue(
"
disableregistrytools
"
,
0
, RegistryValueKind.DWord);
key.Close();
return
true
;
}
catch
{
return
false
;
}
}
///
<summary>
///
禁用注册表
///
</summary>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
notEnableRegedit()
{
RegistryKey key
=
Registry.CurrentUser.OpenSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
,
true
);
//
打开注册表子项
if
(key
==
null
)
//
如果该项不存在的话,则创建该子项
{
key
=
Registry.LocalMachine.CreateSubKey(
"
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system
"
);
}
try
{
key.SetValue(
"
disableregistrytools
"
,
1
, RegistryValueKind.DWord);
key.Close();
return
true
;
}
catch
{
return
false
;
}
}
///
<summary>
///
结束进程
///
</summary>
///
<param name="processName">
进程名称
</param>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
killProcess(
string
processName)
{
try
{
foreach
(Process p
in
Process.GetProcesses())
{
if
(p.ProcessName
==
processName)
{
p.Kill();
}
}
return
true
;
}
catch
{
return
false
; }
}
///
<summary>
///
注册控件
///
</summary>
///
<param name="dllIdValue">
控件注册后对应的键值
</param>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
regDll(
string
dllIdValue)
{
try
{
RegistryKey key
=
Registry.ClassesRoot.OpenSubKey(
@"
CLSTD\
"
+
dllIdValue,
true
);
//
打开注册表子项
if
(key
==
null
)
//
如果该项不存在的话,则创建该子项
{
key
=
Registry.ClassesRoot.CreateSubKey(
@"
CLSTD\
"
+
dllIdValue);
}
return
true
;
}
catch
{
return
false
; }
}
///
<summary>
///
压缩图片(指定压缩比例值)
///
</summary>
///
<param name="fromFile">
源文件
</param>
///
<param name="saveFile">
保存文件
</param>
///
<param name="bili">
比例值(例如0.5)
</param>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
pressImage(
string
fromFile,
string
saveFile,
double
bili)
{
Image img;
Bitmap bmp;
Graphics grap;
int
width, height;
try
{
img
=
Image.FromFile(fromFile);
width
=
Convert.ToInt32(img.Width
*
bili);
height
=
Convert.ToInt32(img.Height
*
bili);
bmp
=
new
Bitmap(width, height);
grap
=
Graphics.FromImage(bmp);
grap.SmoothingMode
=
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
grap.InterpolationMode
=
System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
grap.DrawImage(img,
new
Rectangle(
0
,
0
, width, height));
bmp.Save(saveFile, System.Drawing.Imaging.ImageFormat.Jpeg);
grap.Dispose();
bmp.Dispose();
img.Dispose();
return
true
;
}
catch
{
return
false
; }
}
///
<summary>
///
压缩图片(指定高度和宽度)
///
</summary>
///
<param name="fromFile">
源文件
</param>
///
<param name="saveFile">
保存文件
</param>
///
<param name="width">
宽度值
</param>
///
<param name="height">
高度值
</param>
///
<returns>
成功返回真,否则返回假
</returns>
public
bool
pressImage(
string
fromFile,
string
saveFile,
int
width,
int
height)
{
Image img;
Bitmap bmp;
Graphics grap;
try
{
img
=
Image.FromFile(fromFile);
bmp
=
new
Bitmap(width, height);
grap
=
Graphics.FromImage(bmp);
grap.SmoothingMode
=
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
grap.InterpolationMode
=
System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
grap.DrawImage(img,
new
Rectangle(
0
,
0
, width, height));
bmp.Save(saveFile, System.Drawing.Imaging.ImageFormat.Jpeg);
grap.Dispose();
bmp.Dispose();
img.Dispose();
return
true
;
}
catch
{
return
false
; }
}
}
}