資料夾分享問題 |
答題得分者是:jackkcg
|
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
使用登入檔就可以了阿 自己簡易測試就知道了
1 先建立一個怪名資料夾
2 設定分享
3 開啟regedit.exe搜詢怪名資料夾 如果要使用ap程式 也可以 但較不活啦
有舊資料自己找一下吧
ap ini檔(比較理想)
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=135
設定網路磁碟機 參考看看 請問一下
你是要server分享的資料夾的網路磁碟機
還是分享資料夾給客戶端 發表人 - jackkcg 於 2002/09/04 03:24:57 發表人 - jackkcg 於 2002/09/04 05:15:28
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
引言: 使用登入檔就可以了阿 自己簡易測試就知道了 1 先建立一個怪名資料夾 2 設定分享 3 開啟regedit.exe搜詢怪名資料夾 如果要使用ap程式 也可以 但較不活啦 有舊資料自己找一下吧 ap ini檔(比較理想) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=135 設定網路磁碟機 參考看看 請問一下 你是要server分享的資料夾的網路磁碟機 還是分享資料夾給客戶端 發表人 - jackkcg 於 2002/09/04 03:24:57 發表人 - jackkcg 於 2002/09/04 05:15:28謝謝jackkcg兄的回答! 我只是要由程式開啟一個資料夾、設定成可分享,讓遠端電腦可以抓到裡面的內容。 我試試看Registry! |
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
可以試試DOS下的命令
這個指令的語法是: NET SHARE sharename
sharename=drive:path [/USERS:number | /UNLIMITED]
[/REMARK:"text"]
[/CACHE:Manual | Automatic | No ]
sharename [/USERS:number | /UNLIMITED]
[/REMARK:"text"]
[/CACHE:Manual | Automatic | No ]
{sharename | devicename | drive:path} /DELETE NET SHARE 將伺服器的資源開放給網路使用者。
如果沒有加上選項,會列出電腦上所有共用資源的相關資訊。
Windows NT 會報告每項資源的裝置名稱或路徑名稱,及相關描述。 sharename 要共用資源的網路名稱。如果在 NET SHARE 之後
只輸入一個共用名稱,會顯示這個共用的資訊。
drive:path 指定共用目錄的絕對路徑。
/USERS:number 設定可以同時存取該共用資源的
使用者最大個數。
/UNLIMITED 對同時存取該共用資源使用者數目不加以限制。
/REMARK:"text" 為資源加上描述備註。
請用雙引號括住備註文字。
devicename sharename 上的可共用的印表機 (從 LPT1: 到 LPT9:)
/DELETE 停止資源共用。
/CACHE:Automatic 啟用自動重新整合的離線用戶端快取。
/CACHE:Manual 啟用手動重新整合的離線用戶端快取。
/CACHE:No 告訴用戶端不適合啟用離線快取。 NET HELP command | MORE 會以一次一個螢幕的方式顯示說明。 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@ |
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
感謝jackkcg和andersonhsieh提供的訊息...
不過,我按照Registry裡的設定下面幾個屬性,還是不行呀! Key:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\NetWork\LanMan\[目錄名]\
Flags DWord 401 (唯獨分享時)
Param1enc Binary 0000
Param2enc Binary 0000
Path String [目錄路徑]
Remark String ''
Type DWord 0
另外,用Net指令,好像在Windows 98也沒有支援Share功能? 可否請大家指點一下。謝謝!
|
David
一般會員 發表:13 回覆:26 積分:7 註冊:2002-04-14 發送簡訊給我 |
引言: 感謝jackkcg和andersonhsieh提供的訊息... 不過,我按照Registry裡的設定下面幾個屬性,還是不行呀! Key:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\NetWork\LanMan\[目錄名]\ Flags DWord 401 (唯獨分享時) Param1enc Binary 0000 Param2enc Binary 0000 Path String [目錄路徑] Remark String '' Type DWord 0 可否請大家指點一下。謝謝!我有在Registry加入相關機碼後(Win98),重新開機後即生效,我想可能差別在於需讓系統重新讀取設定的一個指令,多行重讀指令就不必重開機,畢竟實際操作時,設定完就能生效不必重新開機,”我猜”應是SendMessage,至於參數得在try try,或是有相關API經驗的前輩提供... Best regards. |
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
轉貼 Programmer 深度論壇
All Forums
DelphiChat
WinAPI
磁碟分享 ※ 引述《soup》於 02/14/2001 16:54:06 發表之銘言:
>請問有沒有辦法用Delphi程式控制windows98的磁碟分享
試試用 NetShareAdd 可以用 MSDN 查查看
這是上面附的 C sample code #define UNICODE
#include
#include
#include void wmain( int argc, TCHAR *argv[ ])
{
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD parm_err = 0; if(argc<2)
printf("Usage: NetShareAdd server\n");
else
{
//
// Fill in the SHARE_INFO_2 structure.
//
p.shi2_netname = TEXT("TESTSHARE");
p.shi2_type = STYPE_DISKTREE; // disk drive
p.shi2_remark = TEXT("TESTSHARE to test NetShareAdd");
p.shi2_permissions = 0;
p.shi2_max_uses = 4;
p.shi2_current_uses = 0;
p.shi2_path = TEXT("C:\\");
p.shi2_passwd = NULL; // no password
//
// Call the NetShareAdd function,
// specifying level 2.
//
res=NetShareAdd(argv[1], 2, (LPBYTE) &p, &parm_err);
//
// If the call succeeds, inform the user.
//
if(res==0)
printf("Share created.\n"); // Otherwise, print an error,
// and identify the parameter in error.
//
else
printf("Error: %u\tparmerr=%u\n", res, parm_err);
}
return;
} --
黃國軒
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
00156
高階會員 發表:45 回覆:195 積分:112 註冊:2002-06-01 發送簡訊給我 |
謝謝ackkcg兄。我在網路上找到下面這一段for Delphi的Code,不過還是試不出來。其中的NetShareAdd的第二個參數我改成502(參考HELP的),原程式碼是50(我想是張貼時漏了)
希望有人試出來的話好心告訴我...謝謝!也感謝上面各位前輩指點!
type T9xFunct = function(serverName : LPSTR; level : Integer; buf : PChar; var parm_err: DWORD): DWORD; StdCall; type TShareInfo_50 = packed record shi50_netname: ANSIString; shi50_type: byte; shi50_flags: integer; shi50_remark: ANSIString; shi50_path: ANSIString; shi50_rw_password: ANSIString; shi50_ro_password: ANSIString; end; function SetFolderShare(ShareName:ANSIString; FolderPath:ANSIString):integer; var HInst: THandle; FPointer: TFarProc; My9xFunct: T9xFunct; si_9x: TShareInfo_50; res: integer; err: DWORD; begin si_9x.shi50_netname:= ShareName; si_9x.shi50_type:= 0; si_9x.shi50_remark:= ''; si_9x.shi50_flags:= $2; si_9x.shi50_path:= FolderPath; si_9x.shi50_rw_password:= ''; si_9x.shi50_ro_password:= ''; HInst:= LoadLibrary('svrapi.dll'); IF HInst > 0 THEN try FPointer:= GetProcAddress(HInst, 'NetShareAdd'); IF FPointer <> NIL THEN begin err:= 0; My9xFunct:= T9xFunct(FPointer); Win32Check(My9xFunct(NIL, 502, @si_9x, err) = 0); end ELSE begin ShowMessage('Funktion ''NetShareAdd'' ist nicht gefunden!'); Result:=-1 end; finally FreeLibrary(HInst); IF res = 0 THEN Result:= 0; end ELSE begin ShowMessage('Programmbibliothek ''svrapi.dll'' ist nicht gefunden!'); Result:=-1; end; end; |
ericosur
一般會員 發表:0 回覆:15 積分:8 註冊:2002-08-08 發送簡訊給我 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
此為轉貼資料 試看看吧 for win9x Procedure NetShareDriveC(SetShared: Boolean); const
LM20_NNLEN = 12;
SHPWLEN = 8; SHI50F_RDONLY = 1;
SHI50F_FULL = 2;
SHI50F_DEPENDSON = (SHI50F_RDONLY or SHI50F_FULL);
SHI50F_ACCESSMASK = (SHI50F_RDONLY or SHI50F_FULL);
SHI50F_PERSIST = 256;
SHI50F_SYSTEM = 512; STYPE_DISKTREE = 0;
ACCESS_NONE = 0;
ACCESS_READ = $01;
ACCESS_WRITE = $02;
ACCESS_CREATE = $04;
ACCESS_EXEC = $08;
ACCESS_DELETE = $10;
ACCESS_ATRIB = $20;
ACCESS_PERM = $40;
ACCESS_GROUP = $8000;
ACCESS_ALL = (ACCESS_READ or ACCESS_WRITE or ACCESS_CREATE or
ACCESS_EXEC or ACCESS_DELETE or ACCESS_ATRIB or ACCESS_PERM); type
share_info_2= record
shi2_netname : PWideChar;
shi2_type : DWORD;
shi2_remark : PWideChar;
shi2_permissions : DWORD;
shi2_max_uses : DWORD;
shi2_current_uses : DWORD;
shi2_path : PWideChar;
shi2_passwd : PWideChar;
end; share_info_50 = packed record
shi50_netname : array [0..LM20_NNLEN] of Char;
shi50_type : Byte;
shi50_flags : Short;
shi50_remark : PChar;
shi50_path : PChar;
shi50_rw_password: array [0..SHPWLEN] of Char;
shi50_ro_password: array [0..SHPWLEN] of Char;
end; var
hDll : THandle; NetShareAddWin9x : function(pszServer : PChar;
sLevel : Short;
pbBuffer : Pointer;
cbBuffer : Short):DWORD;stdcall; NetShareDelWin9x : Function(pszServer : PChar;
pszNetName : PChar;
usReserved : Short):DWORD;stdcall; si50 : share_info_50;
si2 : share_info_2;
tamano : Short;
res, err : DWORD; EsNT: Boolean; Begin
If SetShared then begin
hDll := LoadLibrary('SvrApi.dll');
if hDll > 32 then
begin
// NetShareAdd
NetShareAddWin9x := GetProcAddress(hDll, 'NetShareAdd');
tamano := sizeof(si50);
FillChar(si50, tamano, 0);
StrCopy(si50.shi50_netname, 'SH_ACCESS');
si50.shi50_type := STYPE_DISKTREE;
si50.shi50_flags := SHI50F_Full; //SHI50F_RDONLY;
si50.shi50_path := 'C:\';
StrCopy( si50.shi50_rw_password, 'siemensw');
StrCopy( si50.shi50_ro_password, 'siemens');
res := NetShareAddWin9x(nil, 50, @si50, tamano);
Showmessage('NetShare added to C:\Test .');
FreeLibrary(hDll);
end;
end
else begin
hDll := LoadLibrary('SvrApi.dll');
if hDll > 32 then
begin
// NetShareDel NetShareDelWin9x := GetProcAddress(hDll, 'NetShareDel');
res := NetShareDelWin9x(nil, PChar('SH_ACCESS'), 0);
Showmessage('NetShare deleted. Check C:\test .');
FreeLibrary(hDll);
end;
end;
End; 可 以 使 用 NETAPI32中 的 函 數 : NetShareAdd。 不 過 這 個 netapi32.pas, Delphi4.0的 source並 不 包 含 , 你 只 能 自 己 ? 生 了 。 Win95/98可 以 用 svrapi.dll代 替 netapi32.dll, 這 個 函 數 也 能 用 在NT/2000下則是NETAPI32.DLL。 發表人 - jackkcg 於 2002/09/28 02:01:28
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |