Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
공유는 어떻게.....
안녕하세요 또 질문을 하게 되네요.
LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 좀 가르켜 주세요...
(윈도우에서가 아니라 델파이에서 공유를 만드는 방법을 예기 하는 겁니다.)
아시는 분은 제발 좀알려주세요.....초보라서 상세하게.....
좋은 밤 되세요...
2
COMMENTS
김영대
•
1999.04.19 18:49
장철진 wrote:
> 안녕하세요 또 질문을 하게 되네요.
> LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 좀 가르켜 주세요...
> (윈도우에서가 아니라 델파이에서 공유를 만드는 방법을 예기 하는 겁니다.)
> 아시는 분은 제발 좀알려주세요.....초보라서 상세하게.....
> 좋은 밤 되세요...
>
>
안녕하세요 김영대입니다
아래 예제는 Windows 95/98 에서만 정확히 동작합니다
NT에서는 SVRAPI.DLL이 아닌 다른 DLL 이 사용되지만
NetShareAdd(), NetShareDel() API의 사용함에 있어서 공유정보
구조체만 다를뿐 사용법은 동일합니다
// 아래 예제는 Windows NT/Windows 2000 는 지원하지 않습니다
// 다른 플랫폼은 MSDN 사이트를 참고하세요
// http://msdn.microsoft.com/library/sdkdoc/network/ntlmapi_18bz.htm
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
// Win95/98 에서는 share info는 0,1,2,50 structure 만 사용가능
Share_Info50 = packed record
shi50_netname : array[0..12] of Char; {13}
shi50_type : Byte;
shi50_flags : Word;
shi50_remark : PChar;
shi50_path : PChar;
shi50_rw_password : array[0..8] of Char; {9}
shi50_ro_password : array[0..8] of Char;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function NetShareAdd(ServerName: PChar;
ShareLevel: SmallInt;
Buffer: Pointer;
Size: Word): Integer; stdcall; external 'SVRAPI.DLL';
function NetShareDel(ServerName: PChar;
NetName: PChar;
Reserved: Word): Integer; stdcall; external 'SVRAPI.DLL';
function ShareResource(ServerName: PChar; FilePath: PChar;
NetName: PChar; Remark: PChar;
ShareType: Byte; Flags: Word;
RWPass: PChar; ROPass: PChar): Integer;
var
MyShare: Share_Info50;
PMyShare: ^Share_Info50;
begin
strLcopy(MyShare.shi50_netname, NetName, 13);
MyShare.shi50_type := ShareType;
MyShare.shi50_flags := Flags;
MyShare.shi50_remark := Remark;
MyShare.shi50_path := FilePath;
strLcopy(MyShare.shi50_rw_password, RWPass, 9);
strLcopy(MyShare.shi50_ro_password, ROPass, 9);
PMyShare := @MyShare;
Result := NetShareAdd(ServerName, 50, PMyShare, SizeOf(MyShare));
end;
function DeleteShare(ServerName: PChar; NetName: PChar): Integer;
begin
Result := NetShareDel(ServerName,NetName, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
rt: Integer;
begin
rt := ShareResource(nil, // 컴퓨터 이름 (nil 은 Local Machine을 의미합니다)
'C:ZZZ', // 공유할 폴더 (전부 대문자로 지정)
'ZZZ', // 공유이름
'공유예제', // 설명
0, // 0=디렉토리 공유, 1=프린터 공유
// 256 or 1= 읽기 전용, 256 or 2=읽기/쓰기, 256 or 1 or 2=암호에 따라 다름
256 or 1 or 2,
'1111', // 읽기/쓰기 암호
'2222'); // 읽기 전용 암호
if rt = 0 then
ShowMessage('폴더가 공유되었습니다')
else
ShowMessage('폴더를 공유할 수 없습니다. 에러번호('+IntToStr(rt)+')');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
rt: Integer;
begin
rt := DeleteShare(nil, 'ZZZ');
if rt = 0 then
ShowMessage('폴더의 공유를 해제하였습니다')
else
ShowMessage('폴더의 공유를 해제할 수 없습니다. 에러번호('+IntToStr(rt)+')');
end;
end.
0
0
삭제
수정
댓글
구창민
•
1999.04.18 02:26
장철진 wrote:
> 안녕하세요 또 질문을 하게 되네요.
> LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 좀 가르켜 주세요...
> (윈도우에서가 아니라 델파이에서 공유를 만드는 방법을 예기 하는 겁니다.)
> 아시는 분은 제발 좀알려주세요.....초보라서 상세하게.....
> 좋은 밤 되세요...
>
>
장철진님 안녕하세요?
NT에서는 테스트 해보지 못했습니다.
아래글은 김영대님이 올리신 글인데
한번 테스트 해보세요. 되면 결과도 올려주시구요.
그럼 .. 도움되시기 바래요.
네트워크 드라이브 연결/해제
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// 네트워크 드라이브 연결
procedure TForm1.Button1Click(Sender: TObject);
var
lpszNetPath,
lpszPassword,
lpszLocalName: array[0..50] of Char;
rt: DWORD;
begin
StrPCopy(lpszPassword, '1234'); // 네트워크 드라이브(공유폴더)의 비밀번호
StrPCopy(lpszNetPath, 'Unify5insa'); // 네트워크 드라이브+공유폴더
StrPCopy(lpszLocalName, 'F:'); // 로컬 드라이브명
rt := WNetAddConnection(lpszNetPath, lpszPassword, lpszLocalName);
if rt = 7 then
begin
ShowMessage('네트워크 드라이브를 연결할 수 없습니다. 비밀번호를 확인하세요');
end
else if rt <> WN_SUCCESS then
begin
MessageDlg('네트워크 드라이브를 연결할 수 없습니다'+
', Return Code: ' + (IntToStr(rt)) ,
mtInformation, [mbOk], 0);
end
else
begin
ShowMessage('네트워크 드라이브가 설정되었습니다');
end;
end;
// 네트워크 드라이브 연결 해제
procedure TForm1.Button2Click(Sender: TObject);
var
lpszLocalName: array[0..50] of Char;
rt: DWORD;
begin
StrPCopy(lpszLocalName, 'F:'); // 로컬 드라이브명
rt := WNetCancelConnection(lpszLocalName, True);
if rt <> WN_SUCCESS then
begin
MessageDlg('네트워크 드라이브의 연결을 해제할 수 없습니다'+
', Return Code: ' + (IntToStr(rt)) ,
mtInformation, [mbOk], 0);
end
else
begin
ShowMessage('네트워크 드라이브의 연결이 해제되었습니다');
end;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
엠마
•
1999.04.17 06:04
5
COMMENTS
/
0
LIKES
쿼리를 다시하지 않고 인쇄할수 없나요..
김영해
•
1999.04.17 07:03
엠마
•
1999.04.17 09:18
김영해
•
1999.04.17 10:34
엠마
•
1999.04.17 19:40
김영해
•
1999.04.18 04:12
최선기
•
1999.06.26 21:15
1
COMMENTS
/
0
LIKES
fieldByName과 Parmabyname의 차이점 좀..
조복기
•
1999.06.26 21:55
최선기 께서 말씀하시기를... > fieldByName과 Parmabyname의 차이점 좀 자세히 알려주세요... > > 어...
손창근
•
1999.04.17 19:17
1
COMMENTS
/
0
LIKES
전화접속에 관하여...
이정욱
•
1999.04.17 21:46
그것은 자동으로 지원할텐데요... 컴퓨터에 전화접속 네트워킹이 설치되어 있고, 연결이 안되어있을때 네...
한
•
1999.06.26 21:09
1
COMMENTS
/
0
LIKES
바코드 입려기....조언좀...
박성훈
•
1999.06.28 03:01
그 친구에게는 미안한데.. 제가 잘 아는 친구가 바코드 관련 프로그램을 전문적으로 만드는 사람입니다. ...
강양규
•
1999.06.26 20:34
1
COMMENTS
/
0
LIKES
DateTimePicker의 날짜를 null로 입력할수 있나요
조복기
•
1999.06.26 21:14
강양규 께서 말씀하시기를... > 안년하세요.. > DateTimePicker를 사용하고 있는데 > > Query를 사용...
화랑
•
1999.04.16 01:29
4
COMMENTS
/
0
LIKES
[Q]프린터로 가는 데이타를 잡을수 있을까요?
이정욱
•
1999.04.16 02:17
아무래도 케이블을 그냥 두갈래로 뽑으신것 같군요. 그렇게 하면 아마도 제데로 안될것 같네요... 그것보...
화랑
•
1999.04.16 03:06
답변 감사합니다.. 문제는 제가 그 서버를 건드릴수가 없습니다. 지금 현재 나와있는 것은 프린터로 가...
이정욱
•
1999.04.16 05:08
프린터포트를 제어하는것은 문제가 없습니다. 그것을 지원하는 컴포넌트를 본적이 있는데.... 아마도 찾아...
화랑
•
1999.04.17 18:11
매번 감사합니다.. 저기 한가지만 더 하고 싶은데.. 프린트는 앱슨을 쓰거든요.. 혹시 서로 전달되는 ...
하남수
•
1999.06.26 20:23
2
COMMENTS
/
0
LIKES
2828에대한 답변에서 질문
조복기
•
1999.06.26 20:42
하남수 께서 말씀하시기를... > 저는 오라클을 사용하여 프로그래밍을 하고 있습니다. > 그리고 제가 알...
하남수
•
1999.06.26 20:36
델피 도움말에 다음가 같은 글이 있군요. 찾아보지도 않고 질문을 했내 그래도 한가지더 이상한 점은 SQL...
이호선
•
1999.06.26 20:10
1
COMMENTS
/
0
LIKES
ftp서버의 화일(.txt)을 프로그램에서 읽을려면..
김영대
•
1999.06.26 20:14
이호선 께서 말씀하시기를... > 안녕하세요. > 델파이 프로그램에서 ftp서버의 화일을 다운 받을려하는데...
엠마
•
1999.04.17 06:04
5
COMMENTS
/
0
LIKES
쿼리를 다시하지 않고 인쇄할수 없나요..
김영해
•
1999.04.17 07:03
엠마
•
1999.04.17 09:18
김영해
•
1999.04.17 10:34
엠마
•
1999.04.17 19:40
김영해
•
1999.04.18 04:12
이동화
•
1999.04.17 09:18
3
COMMENTS
/
0
LIKES
프린트에서 원하는 줄까지만...
최훈
•
1999.06.26 19:32
데이타베이스에서 자료를 읽어와서 트리를 구성하는데 자료가 없을때 노드가 하나도 없는데 트리를 클릭...
이정욱
•
1999.04.18 09:46
기본프린터에 직접 쓰기 팁 입니다. 아마도 업무용 개발자분께는 아주 유용한 자료가 되리라 생각이 듭니...
김영대
•
1999.06.26 20:20
최훈 께서 말씀하시기를... > 데이타베이스에서 자료를 읽어와서 트리를 구성하는데 > 자료가 없을때 노...
박성훈
•
1999.06.26 19:24
3
COMMENTS
/
0
LIKES
sql문에러 좀 봐주세요...
최석기
•
1999.06.26 19:53
박성훈 께서 말씀하시기를... > sql.add('Insert into "User.db" values('1111','1111','관리자',0)'); >...
조복기
•
1999.06.26 19:50
박성훈 께서 말씀하시기를... > sql.add('Insert into "User.db" values('1111','1111','관리자',0)'); ...
하남수
•
1999.06.26 19:41
"user.db'때문이 아닌가요 " "없어야 될 것 같은데.... 박성훈 께서 말씀하시기를... > sql.add('Ins...
엠마
•
1999.04.17 06:04
6
COMMENTS
/
0
LIKES
쿼리를 다시하지 않고 인쇄할수 없나요..
전 재헌
•
1999.06.26 19:21
김영해
•
1999.04.17 07:03
엠마
•
1999.04.17 09:18
김영해
•
1999.04.17 10:34
엠마
•
1999.04.17 19:40
김영해
•
1999.04.18 04:12
송동일
•
1999.06.26 17:42
1
COMMENTS
/
0
LIKES
좀 급해요....
신인재
•
1999.06.26 18:56
ActiveX컨트롤이라면 델파이 내부로 일딴 임포트를 하셔야 합니다.. 컴포넌트 메뉴에 import activex...
장철진
•
1999.04.17 08:55
2
COMMENTS
/
0
LIKES
공유는 어떻게.....
안녕하세요 또 질문을 하게 되네요. LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 좀 가르켜 주세요... (윈도우에서가 아니라 델파이에서 공유를 만드는 방법을 예기 하는 겁니다.) 아시는 분은 제발 좀알려주세요.....초보라서 상세하...
김영대
•
1999.04.19 18:49
장철진 wrote: > 안녕하세요 또 질문을 하게 되네요. > LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 ...
구창민
•
1999.04.18 02:26
장철진 wrote: > 안녕하세요 또 질문을 하게 되네요. > LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 ...
박성훈
•
1999.06.26 17:23
1
COMMENTS
/
0
LIKES
에디트컴포넌트에서 undo기능 구현
최석기
•
1999.06.26 17:39
박성훈 께서 말씀하시기를... > 에디트컴포넌트에서 코드상으로 undo기능을 구현하려면 어떻게 합니까? >...
박성훈
•
1999.06.26 17:10
1
COMMENTS
/
0
LIKES
콤마가 찍힌 문자열을 float형식으로 받아오려면...
최석기
•
1999.06.26 17:37
박성훈 께서 말씀하시기를... > panel1.caption:=formatfloat('#,##0',strtofloat(s)); > > 여기서 pan...
이슬
•
1999.04.15 03:34
4
COMMENTS
/
0
LIKES
DBGrid에 어떻게 입력을 시켜야 할지?
김영해
•
1999.04.17 08:00
이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
신호성
•
1999.04.16 01:36
> 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. > 근데, DBGrid에...
박종모
•
1999.04.15 04:44
이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
글쎄요
•
1999.04.15 05:41
추가로 답변합니다. 2번째 건데 답변이 잘 못된 것 같아요. 가장 좋은 방법은 DBGRID 대신에 STRINGGRID...
박성훈
1999.06.26 17:04
0
COMMENTS
/
0
LIKES
화면구성에 대한 조언을 부탁드립니다.
이한나(소라동생)
•
1999.06.26 14:07
5
COMMENTS
/
0
LIKES
리치에디터에서 특정글자에 대한 폰트컬러값 되요?
김영해
•
1999.04.15 08:49
안녕하세요 application을 개발하다 문제가 있어 이렇게 다시 질문합니다. 제목과 같이 일정시간 동안 입...
김영대
•
1999.06.26 20:16
이한나(소라동생) 께서 말씀하시기를... > 리치에디터에서 콜럼값과 라인값을 리턴받아 그에 해당하는 문...
이정욱
•
1999.04.15 10:21
아래 작업전환을 막는것이 있습니다. 이 코드는 나이렉스의 팁 게시판에서 가져왔습니다. var Form1:...
이한나(소라동생)
•
1999.06.27 12:08
김영대 께서 말씀하시기를... > 이한나(소라동생) 께서 말씀하시기를... > > 리치에디터에서 콜럼값과 라...
김영해
•
1999.04.17 07:48
감사합니다.이정욱님 많은 도움이 되었습니다.
이태호
1999.06.26 11:59
0
COMMENTS
/
0
LIKES
키입력 제어 [도와주세요!!!]
장철진
1999/04/17 08:55
Views
237
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 안녕하세요 또 질문을 하게 되네요.
> LAN에서 NT4.0을 쓰고있는데 공유를 만드는 방법 좀 가르켜 주세요...
> (윈도우에서가 아니라 델파이에서 공유를 만드는 방법을 예기 하는 겁니다.)
> 아시는 분은 제발 좀알려주세요.....초보라서 상세하게.....
> 좋은 밤 되세요...
>
>
안녕하세요 김영대입니다
아래 예제는 Windows 95/98 에서만 정확히 동작합니다
NT에서는 SVRAPI.DLL이 아닌 다른 DLL 이 사용되지만
NetShareAdd(), NetShareDel() API의 사용함에 있어서 공유정보
구조체만 다를뿐 사용법은 동일합니다
// 아래 예제는 Windows NT/Windows 2000 는 지원하지 않습니다
// 다른 플랫폼은 MSDN 사이트를 참고하세요
// http://msdn.microsoft.com/library/sdkdoc/network/ntlmapi_18bz.htm
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
// Win95/98 에서는 share info는 0,1,2,50 structure 만 사용가능
Share_Info50 = packed record
shi50_netname : array[0..12] of Char; {13}
shi50_type : Byte;
shi50_flags : Word;
shi50_remark : PChar;
shi50_path : PChar;
shi50_rw_password : array[0..8] of Char; {9}
shi50_ro_password : array[0..8] of Char;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function NetShareAdd(ServerName: PChar;
ShareLevel: SmallInt;
Buffer: Pointer;
Size: Word): Integer; stdcall; external 'SVRAPI.DLL';
function NetShareDel(ServerName: PChar;
NetName: PChar;
Reserved: Word): Integer; stdcall; external 'SVRAPI.DLL';
function ShareResource(ServerName: PChar; FilePath: PChar;
NetName: PChar; Remark: PChar;
ShareType: Byte; Flags: Word;
RWPass: PChar; ROPass: PChar): Integer;
var
MyShare: Share_Info50;
PMyShare: ^Share_Info50;
begin
strLcopy(MyShare.shi50_netname, NetName, 13);
MyShare.shi50_type := ShareType;
MyShare.shi50_flags := Flags;
MyShare.shi50_remark := Remark;
MyShare.shi50_path := FilePath;
strLcopy(MyShare.shi50_rw_password, RWPass, 9);
strLcopy(MyShare.shi50_ro_password, ROPass, 9);
PMyShare := @MyShare;
Result := NetShareAdd(ServerName, 50, PMyShare, SizeOf(MyShare));
end;
function DeleteShare(ServerName: PChar; NetName: PChar): Integer;
begin
Result := NetShareDel(ServerName,NetName, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
rt: Integer;
begin
rt := ShareResource(nil, // 컴퓨터 이름 (nil 은 Local Machine을 의미합니다)
'C:ZZZ', // 공유할 폴더 (전부 대문자로 지정)
'ZZZ', // 공유이름
'공유예제', // 설명
0, // 0=디렉토리 공유, 1=프린터 공유
// 256 or 1= 읽기 전용, 256 or 2=읽기/쓰기, 256 or 1 or 2=암호에 따라 다름
256 or 1 or 2,
'1111', // 읽기/쓰기 암호
'2222'); // 읽기 전용 암호
if rt = 0 then
ShowMessage('폴더가 공유되었습니다')
else
ShowMessage('폴더를 공유할 수 없습니다. 에러번호('+IntToStr(rt)+')');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
rt: Integer;
begin
rt := DeleteShare(nil, 'ZZZ');
if rt = 0 then
ShowMessage('폴더의 공유를 해제하였습니다')
else
ShowMessage('폴더의 공유를 해제할 수 없습니다. 에러번호('+IntToStr(rt)+')');
end;
end.