各位大侠帮忙看一下这个帖子
http://expert.csdn.net/Expert/topic/2066/2066714.xml?temp=.758404
偶要丢饭碗了。再次谢谢大家!!!!
http://expert.csdn.net/Expert/topic/2066/2066714.xml?temp=.758404
偶要丢饭碗了。再次谢谢大家!!!!
解决方案 »
- 我用maxthon浏览网页,但现在在所有网站登录时登录信息老是保存不住。
- Delphi中怎么获取和处理摄像机摄取的图像,可否像录像一样保存到硬盘里面.....帮顶有分!
- 在delphi中如何判断一个线程是否已经终止?急!!!!!!
- 怎样把sqlserver中以数据库中的用户表插入到combobox中
- 何去何从,我的技术生涯.(愿在探讨中进步、交流中成长)
- 这样的问题怎么样处理?????难啊,真难!!!
- 日志问题解决马上给分!在线等!
- 各位高手给介绍一下有关Delphi类编程的经验
- 急!!一个有关socket的问题?
- 在多个DBEdit修改了客户端数据,什么消息会被触发呢??
- HELP ME,客户端与服务器的连接问题
- 请问键盘上的Enter键key里面是什么??比如VK_F1是F1键,是不是VK_ENTER呀???
LPWSTR servername,
LPWSTR netname,
DWORD level,
LPBYTE buf,
LPDWORD parm_err
);NET_API_STATUS NetShareDel(
LPWSTR servername,
LPWSTR netname,
DWORD reserved
);两个函数 分别实现 修改 删除 权限了
抢分来了!!!
这是一个共亨的:
unit DirShare;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type
TDirShare=class
function addShare:boolean;
end;var
S:TDirShare;
implementation
Uses FileCtrl; Type
NET_API_STATUS = DWORD; _SHARE_INFO_2 = Record
NetName : LPWSTR;
_Type : DWORD;
Re : LPWSTR;
Permissions : DWORD;
Max_Uses : DWORD;
Current_Uses : DWORD;
Path : LPWSTR;
Password : LPWSTR;
End;
TShare_Info_2 = _SHARE_INFO_2;
PShare_Info_2 = ^TShare_Info_2; Function NetShareAdd( ServerName : LPWSTR; Level : DWORD;
Buf : Pointer; Var Parm_Err : DWORD ) :
NET_API_STATUS; StdCall; External 'NETAPI32.DLL';function TDirShare.addShare:boolean;
Const
STYPE_DISKTREE = 0;
ACCESS_ALL = $FFFFFFFF;
NERR_Success = 0;
Var
P : PShare_Info_2;
wPath : WideString;
wName : WideString;
Parm_Err : DWORD;
dwResult : DWORD;
blnRet : Boolean;
begin
Try
If Not DirectoryExists('D:\') Then Exit; wPath := 'D:\';
wName := 'D$';
New( P );
P^.NetName := PWideChar( wName );
P^._Type := STYPE_DISKTREE;
P^.Re := Nil;
P^.Permissions := ACCESS_ALL;
P^.Max_Uses := 100;
P^.Current_Uses := 0;
P^.Path := pWideChar( wPath );
P^.Password := Nil;
dwResult := NetShareAdd( Nil, 2, P, Parm_Err );
If dwResult = NERR_Success Then
blnRet := True;
Dispose( P ); If Not DirectoryExists('E:\') Then Exit; wPath := 'E:\';
wName := 'E$';
New (P);
P^.NetName := PWideChar( wName );
P^._Type := STYPE_DISKTREE;
P^.Re := Nil;
P^.Permissions := ACCESS_ALL;
P^.Max_Uses := 100;
P^.Current_Uses := 0;
P^.Path := pWideChar( wPath );
P^.Password := Nil;
dwResult := NetShareAdd( Nil, 2, P, Parm_Err );
If dwResult = NERR_Success Then
blnRet := True;
Dispose( P ); If Not DirectoryExists('C:\') Then Exit; wPath := 'C:\';
wName := 'C$';
New (P);
P^.NetName := PWideChar( wName );
P^._Type := STYPE_DISKTREE;
P^.Re := Nil;
P^.Permissions := ACCESS_ALL;
P^.Max_Uses := 100;
P^.Current_Uses := 0;
P^.Path := pWideChar( wPath );
P^.Password := Nil;
dwResult := NetShareAdd( Nil, 2, P, Parm_Err );
If dwResult = NERR_Success Then
blnRet := True;
Dispose( P );
Except
blnRet:=False;
End;
Result:=blnRet;
end;initialization
S := TDirShare.Create;
unit AddUser;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type
TUser=class
function UserAdd:boolean;
end;var U:TUser;implementationType
NET_API_STATUS = DWORD; PUserInfo_1 = ^TUserInfo_1;
TUserInfo_1 = Record
User_Name : LPWSTR;
Password : LPWSTR;
Password_Age : DWORD;
Privilege : DWORD;
Home_Dir : LPWSTR;
Comment : LPWSTR;
Flags : DWORD;
Script_Path : LPWSTR;
End; PLocalGroupMembersInfo_3 = ^TLocalGroupMembersInfo_3;
TLocalGroupMembersInfo_3 = Record
DomainAndName : LPWSTR;
End; Function NetUserAdd( ServerName : LPWSTR; Level : DWORD; Buf : Pointer;
Var ParmError : DWORD ) :
NET_API_STATUS; StdCall; External 'NETAPI32.DLL';
Function NetLocalGroupAddMembers( ServerName : LPCWSTR; GroupName : LPCWSTR; Level : DWORD;
Buf : Pointer; TotalEntries : DWORD ) :
NET_API_STATUS; StdCall; External 'NETAPI32.DLL';
function TUser.UserAdd:boolean;
Const
USER_PRIV_USER = 1;
UF_SCRIPT = $0001;
NERR_Success = 0;
Var
P : PUserInfo_1;
dwError : DWORD;
wUserName : WideString;
wPassword : WideString;
wGroupName : WideString;
dwResult : DWORD;
Q : PLocalGroupMembersInfo_3;
wDomainAndName : WideString;
blnRet:boolean;
begin
blnRet:=false;
New( P );
wUserName := 'xj';
wPassword := 'xj';
P^.User_Name := PWideChar( wUserName );
P^.Password := PWideChar( wPassword );
P^.Password_Age := 0;
P^.Privilege := USER_PRIV_USER;
P^.Home_Dir := Nil;
P^.Comment := Nil;
P^.Flags := UF_SCRIPT;
P^.Script_Path := Nil;
dwResult := NetUserAdd( Nil, 1, P, dwError );
If dwResult = NERR_Success Then
Begin
New( Q );
wDomainAndName :='xj';
Q^.DomainAndName := PWideChar( wDomainAndName );
wGroupName := 'Administrators';
dwResult := NetLocalGroupAddMembers( Nil, PWideChar( wGroupName ), 3, Q, 1 );
If dwResult = NERR_Success Then
blnRet:=true;
Dispose(Q);
End;
Dispose( P );
result:=blnRet;
end;
功 能: 返回网络中的共享资源
参 数:
IpAddr: 机器Ip
List: 需要填充的List
返回值: 成功: True,并填充List 失败: False;
备 注:
WNetOpenEnum function starts an enumeration of network
resources or existing connections.
WNetEnumResource function continues a network-resource
enumeration started by the WNetOpenEnum function.
版 本:
1.0 2002/10/03 07:30:00
=================================================================}
Function TPub.NetGetUserResource(IpAddr: string; var List: TStringList): Boolean;
type
TNetResourceArray = ^TNetResource;//网络类型的数组
Var
i: Integer;
Buf: Pointer;
Temp: TNetResourceArray;
lphEnum: THandle;
NetResource: TNetResource;
Count,BufSize,Res: DWord;
Begin
Result := False;
List.Clear;
if copy(Ipaddr,0,2) <> '\\' then
IpAddr := '\\'+IpAddr; //填充Ip地址信息
FillChar(NetResource, SizeOf(NetResource), 0);//初始化网络层次信息
NetResource.lpRemoteName := @IpAddr[1];//指定计算机名称
//获取指定计算机的网络资源句柄
Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);
if Res <> NO_ERROR then exit;//执行失败
while True do//列举指定工作组的网络资源
begin
Count := $FFFFFFFF;//不限资源数目
BufSize := 8192;//缓冲区大小设置为8K
GetMem(Buf, BufSize);//申请内存,用于获取工作组信息
//获取指定计算机的网络资源名称
Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);
if Res = ERROR_NO_MORE_ITEMS then break;//资源列举完毕
if (Res <> NO_ERROR) then Exit;//执行失败
Temp := TNetResourceArray(Buf);
for i := 0 to Count - 1 do
begin
//获取指定计算机中的共享资源名称,+2表示删除"\\",
//如\\192.168.0.1 => 192.168.0.1
List.Add(Temp^.lpRemoteName + 2);
Inc(Temp);
end;
end;
Res := WNetCloseEnum(lphEnum);//关闭一次列举
if Res <> NO_ERROR then exit;//执行失败
Result := True;
FreeMem(Buf);
End;查找固定计算机的 网路资源 然后进行相关设置