如何编程完成开,关ipc$的功能?(50分)

  • 主题发起人 主题发起人 txz123
  • 开始时间 开始时间
T

txz123

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道用net share ipc$ /del,但如何编程完成这个功能,请教.不用winexe()等方式,
 
修改注册表而已
 
修改注册表哪个键?我用regsnap监视不到啊,jingtao能否告知?先谢了.
 
到GOOGLER搜索一下什么安全什么的
代码放在移动盘
没带
 
NT系统默认共享的取消

我们可以用Net Share命令来删除,但是机器重启后这个共享会自动出现,这时,我们可以修改注册表。
IPC$、Admin$和C$、D$都不同,在注册表的修改是不同的。你所改的只是禁止了C$、D$。而没有禁止IPC$。
禁止C$、D$管理共享
对于服务器而言:
修改HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters
Name:AutoShareServer
Type:DWORD
Value:0
对于工作站而言:
修改HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters
Name:AutoShareWks
Type:DWORD
Value:0
修改注册表后需要重启Server服务或重新启动机器。
注:这些键值在默认情况下在主机上是不存在的,需要自己手动添加。

禁止ADMIN$缺省共享
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters
Name:AutoShareWks
Type:REG_DWORD
Value:0x0

限制IPC$缺省共享
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa
Name:restrictanonymous
Type:REG_DWORD
Value:0x0(缺省)
0x1 匿名用户无法列举本机用户列表
0x2 匿名用户无法连接本机IPC$共享
说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server。


 
注意,改注册表。重起后才有效
不用WINEXEC嘛~~~~ 还没有想到
 
比如使用net share admin$ /del 之后,admin$是不能用的,我想windows系统一定是有设置的地方,他也没有重起,我应如何编写来使admin$可用,而不能重起???
 
上面的也不用重起的.
program Project1;
{
By lovejingtao.2003,7,10.
http://www.138soft.com
}
uses
Windows,ServiceManager;

{$R *.res}
const
ServiceName:array[1..3] of Pchar=('Task Scheduler',//允许程序在指定时间运行,At命令会用到
'SSDP Discover Service',//于启动家庭网络设备上的UPnP设备,服务同时会启动5000端口。可能造成DDOS攻击
'Remote Registry Service');//远程注册表

RootKey:array[1..3] of HKEY=(HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE,
HKEY_LOCAL_MACHINE);
SubKey:array[1..3] of String=('SYSTEM/CurrentControlSet/Control/Lsa', //IPC
'SYSTEM/CurrentControlSet/Services/lanmanserver/parameters',
'SYSTEM/CurrentControlSet/Services/lanmanserver/parameters');
KeyName:array[1..3] of String=('restrictanonymous',
'AutoShareServer',
'AutoShareWks');
Value:array[1..3] of integer=(1,
0,
0);
function MyRegWriteInteger(RootKey:HKEY;SubKey:String;KeyName:String;Value:integer):Boolean;
var
key : HKEY;
ret : integer;
chg : DWORD;
begin
Result:=False;
key := 0;
ret := RegCreateKeyEx(
RootKey,
Pchar(SubKey),
0,Nil,REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
Nil,key,@chg);
if (ret<>ERROR_SUCCESS) or (key=0) then exit;
try
RegSetValueEx(key,Pchar(KeyName),0,REG_DWORD,@Value,sizeof(Value));
finally
RegCloseKey(key);
end;
Result:=True;
end;

function StopService(ServiceName:Pchar):Boolean;
var
MyServiceManager:TServiceManager;
begin
Result:=False;
MyServiceManager:=TServiceManager.Create;
if not MyServiceManager.Connect then Exit;
if not MyServiceManager.OpenServiceConnection(ServiceName) then Exit;
if not MyServiceManager.ServiceStopped then
if not MyServiceManager.StopService then Exit;
MyServiceManager.ShutdownService;
MyServiceManager.Free;
Result:=True;
end;
var
i:integer;
begin
for i:=1 to 3 do
begin
MyRegWriteInteger(RootKey,SubKey,KeyName,Value);
StopService(ServiceName);
end;
MessageBox(0,'设置完毕!','系统安全',0);
end.
 
jingtao是不是武汉的啊~
 
越看越不明白問的是什麼?

如果要實現共享和不共享調用一個net share就行了
shellexecute不行嗎?
 
jintao:你好,可能你误会我的意思了,我的问题是我想写一个程序来远程控制我的电脑,当我要传文件时,我就开ipc$,admin$,当我不用时,为了安全我就关了这两个共享,当然不能将我远程的电脑重起.你的程序只是禁止使用,禁止后我又如何来开?而windows下用net share ipc$ 及net share ipc$ /del 就可以反复设置不需重起,我不知它改的是哪里,所以不得以再次请教高手.
 
接受答案了.
 
后退
顶部