如何新增一個目錄!! |
尚未結案
|
allenlue
一般會員 發表:3 回覆:7 積分:2 註冊:2002-03-18 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
allenlue
一般會員 發表:3 回覆:7 積分:2 註冊:2002-03-18 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
allenlue
一般會員 發表:3 回覆:7 積分:2 註冊:2002-03-18 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
allenlue
一般會員 發表:3 回覆:7 積分:2 註冊:2002-03-18 發送簡訊給我 |
我自己也是有試過..
建立在自己的電腦上是都沒有問題的! 我的 Service 最主要是跑排程用的!
定時會去備份某些目錄.
然後拷貝到已連線中的網路磁碟機.
但又因在拷貝時會浪費CPU的資源,因為在跑備份時CPU都衝到100%,
所以我就把複製的動作放到Thread裡去了!
但是問題來了.
沒把他放進Thread裡時,所有動作都是正常的!
但放進Thread裡,卻無法建立目錄,也無法複製檔案到網路磁碟裡去!
就連ADO元件也一樣無法執行~
但ADO方面我已解決,也找出問題了.
唯獨複製檔案會無法順利的複製到網路磁碟!
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
參考看看
http://delphi.ktop.com.tw/topic.php?topic_id=40937 我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
allenlue
一般會員 發表:3 回覆:7 積分:2 註冊:2002-03-18 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
|
allenlue
一般會員 發表:3 回覆:7 積分:2 註冊:2002-03-18 發送簡訊給我 |
以下是完整的程式碼!!
請各位幫忙..謝謝各位~ unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs; type
TService1 = class(TService)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end; var
Service1: TService1; implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end; function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end; procedure TService1.Timer1Timer(Sender: TObject);
begin
CreateDir('R:\aaa');
end; end. 如果是把R:改成自己電腦上的磁碟是沒問題的.
但是改到R:就無法建立目錄.也沒任何錯誤訊息!
我的R:磁碟連接的方式如下:
\\PcName\c$
然後輸入PcName電腦的帳號及密碼,
帳號我是用 administrator!
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
allenlue:幾個方向參考一下; 一、我記得C$是Windows的預設共用,好像不可以直接以檔案總管給予一個 虛擬網路磁碟機號。我參考領航天使 站長的 http://delphi.ktop.com.tw/topic.php?topic_id=135 設定網路磁碟機;當然我翻成BCB測試加上hagar 版主提供的 連線: WNetGetConnection();斷線: WNetCancelConnection2(); 恢復連線: WNetAddConnection2();等指令 procedure TForm1.Button1Click(Sender: TObject); var NRW: TNetResource; begin with NRW do begin dwType := RESOURCETYPE_ANY; lpLocalName := 'R:'; //驅動器號 lpRemoteName := '\\MyServer\MyDirectory'; lpProvider := ''; end; WNetAddConnection2(NRW, 'MyPassword', 'MyUserName', CONNECT_UPDATE_PROFILE); end; 以上是天使大人語法於BCB測試無誤!以下為BCB語法: void __fastcall TThreadSortForm::Button1Click(TObject *Sender) { TNetResource NRW; NRW.dwType=RESOURCETYPE_ANY; NRW.lpLocalName="R:"; NRW.lpRemoteName="\\\\RexChang\\c$"; NRW.lpProvider=""; WNetAddConnection2(&NRW, (LPSTR) NULL, (LPSTR) NULL,CONNECT_UPDATE_PROFILE); } 接著我再下 void __fastcall TSortThread::Execute() { bool tf=CreateDir("R:\\Test"); if (tf) // Create Dir is OK else // Create Dir is Non-OK // ..... } 或直接下:CreateDir("\\\\RexChang\\c$\\Test"); 都沒問題!我也沒有增加任何宣告。並且以上作業於Thread上完成。 BCB6 Win-XP。 是否可以考慮將程式上傳至會員求助中心! P.S.BCB可以跑Delphi程式。 請參考!Andy Chang
------
Andy Chang |
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
改這樣試試
var RemoteString : array[0..255] of char; lpRemote : PChar; StringLen : cardinal; begin lpRemote := @RemoteString; StringLen := 255; if WNetGetConnection(Pchar(ExtractFileDrive('R:')), lpRemote, StringLen) = 0 then CreateDir( RemoteString '\aaa'); end;我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
allenlue
一般會員 發表:3 回覆:7 積分:2 註冊:2002-03-18 發送簡訊給我 |
|
wu-eric
中階會員 發表:14 回覆:82 積分:64 註冊:2004-03-17 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
allenlue:試試Windows API的CreateDirectory()吧! Form1放一個Button,Label,Edit: 例程式: //--------------------------------------------------------------------------- #includeAndy Chang
------
Andy Chang |
vincent1974
一般會員 發表:2 回覆:2 積分:0 註冊:2004-10-29 發送簡訊給我 |
|
rexchiu
中階會員 發表:14 回覆:88 積分:70 註冊:2002-03-17 發送簡訊給我 |
想問一下,你建立網路磁碟機,是用哪個身分建立的?
那麼執行Service時,又是用哪個身分去執行呢?我指的是每一個服務我們都
可以指定他的登入身分,而用Delphi產生出來的,通常都是用"本機系統帳戶"
而你的情況,據我猜想很可能是這樣,在"本機系統帳戶"的環境下,並不知道你
已經建立了一個網路磁碟機.所以當然無法建立.類似的情況我也遇過.
然而到目前為止,尚未找到一個好方法!
建議你,建立網路磁碟機的動作,直接在你的Service 程式中去做.然後在作你要
的建目錄的動作吧.. Best Regards,
Rex Chiu
------
Best Regards, Rex Chiu |
JustinShen
中階會員 發表:22 回覆:104 積分:80 註冊:2003-09-20 發送簡訊給我 |
非常赞同rexchiu 的做法,在有domain的情况下尤其应该在服务器端处理。
对于workgroup方式建立的对等网络里,不要使用\\computername\c$这样的做法,不太符合权限预定。 除非您的作业必须在client端运作,然后进行备份,这样的话就必须完整地进行:登陆/映射共享/建目录这样的过程,因为您使用本地的Administrator仍然不一定就可以使用server的c$系统共享。 权作参考 Justin Shen
------
==================== 我为一切作努力! Justin Shen |
rexchiu
中階會員 發表:14 回覆:88 積分:70 註冊:2002-03-17 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs; type TService1 = class(TService) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private declarations } public function GetServiceController: TServiceController; override; { Public declarations } end; var Service1: TService1; implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall; begin Service1.Controller(CtrlCode); end; function TService1.GetServiceController: TServiceController; begin Result := ServiceController; end; procedure TService1.Timer1Timer(Sender: TObject); var NRW: TNetResource; res :DWORD; begin with NRW do begin dwType := RESOURCETYPE_ANY; lpLocalName := 'R:'; lpRemoteName := '\\HostName\foldername';//這個要改成你適合的喔!! lpProvider := ''; end; // password 跟Account 也都要改成你的設定喔... res:=WNetAddConnection2(NRW, 'password', 'Account',CONNECT_UPDATE_PROFILE); if (res=0) or(res=85) then begin CreateDir('R:\aaa'); end; res:=WNetCancelConnection2(pchar('R:'),CONNECT_UPDATE_PROFILE,TRUE); end; end.把程式改成以上,並且編譯好,安裝好. 然後依照以下的步驟作設定吧... step 1 先檢查你的Administrator 有沒有"以服務方式登入"的特殊權限.沒有就加上去吧. step2 然後將服務以上圖的方式設定.這樣就可以了...
------
Best Regards, Rex Chiu |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |