如何變換身分取得開檔授權 |
尚未結案
|
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
我的方法如下
1、使用隱藏共享$符號(像IPC$),就可以把這個共享給藏起來,不被網芳瀏覽到
2、用SQL BLOB欄位存放(可以存到2G)...程式要用時再用STREAM抓下即可 寫入BLOB的方法如下
procedure TForm1.Button1Click(Sender: TObject); var fstrm : TFileStream; BS : TBlobStream; begin with ADOQuery1 do begin // 隨你喜歡,看是要用ADO還是BDE,只要能支持BLOB欄位格式的Database都可以 SQL.Clear; SQL.Add('SELECT A,B,C FROM DATAX WHERE A=1'); // 我亂掰的,自己依需求修改一下 EXECSQL; OPEN; fstrm:=TFileStream.Create('C:\AUTOEXEC.BAT',fmOpenRead OR fmShareDenyWrite); fstrm.Seek(soFromBeginning,0); if fstrm.size>0 then begin if recordcount=0 then // SELECT 得到記錄就修改該筆記錄,找不到就新增一筆 APPEND else edit; BS:=TBlobStream(CREATEBLOBSTREAM(FIELDBYNAME('C'),bmWrite)); // C欄位是BLOB格式,用IMAGE可以支援到2G,用多少才佔多少實体空間 BS.CopyFrom(fstrm,0); BS.Free; // 啥感覺都沒就寫入了到SQL了...當然,有安全顧慮的系統,要自己修改一下 post; end else showmessage('無法加入其他文件夾的資料'); freeandnil(fstrm); CLOSE; END; end; 從SQL讀回來的方法 fstrm:=TFileStream.Create('C:\AUTOEXEC.BAK',fmCreate); // 故意寫成BAK的,免得寫壞了害你不能開機 fstrm.CopyFrom(CREATEBLOBSTREAM(FIELDBYNAME('C'),bmRead),0); freeandnil(fstrm);還有很多其他更好的方法...不過我學藝不精,不知道其他大大能否指教 我不懂,不懂,不懂....所以我才來ktop學工夫 |
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
不過我回答的可能不對題目,如果是要在WINDOWS里變換身份連線某個網路磁碟機,是可以,不過只限於WINDOWS NT/2000/XP/2003.......98是不可以改變帳號,但可以用不同密碼連線別的UNC成自己的LOCAL DRIVER~ 簡單說,我用ABC這個帳號登入98系統,可以用密碼123連到\\NAS1\SHAREx,另外可以用密碼456連到\\NAS2\SHAREx,看你要用dos的net的指令來做也好,還是以下範例也好 NT/2000/XP/2003以上系統才可以使用跟登入時不同的帳號來連線網路資源.....
procedure Netuse(Drv,Server,NetDisk,username,pwd:string); var lpNETRESOURCE: TNETRESOURCE; ERRORRESP : INTEGER ; xr : longint; result: string; begin if (Drv='') OR (Server='') OR (NetDisk='')THEN EXIT ; lpNETRESOURCE.dwScope :=RESOURCE_REMEMBERED OR RESOURCE_CONNECTED; lpNETRESOURCE.dwType :=RESOURCETYPE_DISK ; lpNETRESOURCE.lpLocalname :=pchar(Drv); lpNETRESOURCE.lpRemotename:=pchar('\\' server '\' NetDisk); lpNETRESOURCE.lpProvider :=nil; SetLastError(0); WNETADDConnection2( lpNETRESOURCE,PCHAR(pwd),PCHAR(username),CONNECT_UPDATE_PROFILE); xr:=GetLastError; case xr of NO_ERROR: Result := '連線完成'; ERROR_ALREADY_ASSIGNED: Result := '本地磁碟機字元已經被指定 '; ERROR_ACCESS_DENIED: Result := '存取網路資源被拒'; ERROR_BAD_DEV_TYPE: Result := '本地設備形態與網路資源不符合'; ERROR_BAD_DEVICE: Result := '本地磁碟機字元無效'; ERROR_BAD_NET_NAME: Result := '網路資源名稱無效'; ERROR_BAD_PROFILE: Result := '使用者資料檔為無效格式'; ERROR_BAD_PROVIDER: Result := '找不到相符指定的網路提供者'; ERROR_BUSY: Result := '網路忙碌中'; ERROR_CANCELLED: Result := '使用者取消網路連線'; ERROR_CANNOT_OPEN_PROFILE: Result := '系統無法開啟使用者資料檔進行權限核對'; ERROR_DEVICE_ALREADY_REMEMBERED: Result := '網路資源已經連線'; ERROR_EXTENDED_ERROR:Result := '網路發生錯誤'; ERROR_INVALID_PASSWORD: Result:='密碼無效'; ERROR_NO_NET_OR_BAD_PATH: Result := '網路元件未啟動'; ERROR_NO_NETWORK: Result := '網路不存在'; end; if xr<>NO_ERROR then begin SetLastError(0); WNETCancelConnection( pchar(DRV),true); end; end; procedure TForm1.Button1Click(Sender:TObject); begin netuse('K:','NAS1','SHAREx$','abc','123') ; // 用帳號abc,密碼123,連接網路磁碟機K:到 \\NAS1\SHAREx$ netuse('L:','NAS2','SHAREx$','abc','456') ; // 用帳號abc,密碼456,連接網路磁碟機L:到 \\NAS2\SHAREx$ netuse('LPT1','NAS3','HPLASER','abc','789') ; // 用帳號abc,密碼789,連接本地印表機連接埠LPT1到 \\NAS3\HPLASER // 以上範例跟DOS下net use的結果相同~~!! end; procedure TForm1.Button2Click(Sender:TObject); begin WNETCancelConnection( pchar('K:'),true); // 中斷連接K: WNETCancelConnection( pchar('L:'),true); // 中斷連接L: WNETCancelConnection( pchar('LPT1'),true); // 中斷連接LPT1 end;我不懂,不懂,不懂....所以我才來ktop學工夫 |
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
ipc$連接失敗的原因
以下5個原因是比較常見的:
1)你的系統不是NT或以上操作系統;
2)對方沒有打開ipc$默認共享
3)對方未開啟139或445端口(惑被防火牆屏蔽)
4)你的命令輸入有誤(比如缺少了空格等)
5)用戶名或密碼錯誤(空連接當然無所謂了)
另外,你也可以根據返回的錯誤號分析原因:
錯誤號5,拒絕訪問 : 很可能你使用的用戶不是管理員權限的,先提升權限;
錯誤號51,Windows 無法找到網絡路徑 : 網絡有問題;
錯誤號53,找不到網絡路徑 : ip地址錯誤;目標未開機;目標lanmanserver服務未啟動;目標有防火牆(端口過濾);
錯誤號67,找不到網絡名 : 你的lanmanworkstation服務未啟動;目標刪除了ipc$;
錯誤號1219,提供的憑據與已存在的憑據集衝突 : 你已經和對方建立了一個ipc$,請刪除再連。
錯誤號1326,未知的用戶名或錯誤密碼 : 原因很明顯了;
錯誤號1792,試圖登錄,但是網絡登錄服務沒有啟動 : 目標NetLogon服務未啟動。(連接域控會出現此情況)
錯誤號2242,此用戶的密碼已經過期 : 目標有帳號策略,強制定期要求更改密碼。 我不懂,不懂,不懂....所以我才來ktop學工夫
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
答案不就出來了,你有\\A的權限,代表你可能早已經跟A主機連上了,那如果你還想跟他用另外的權限連其他的資料夾,不使用連線網路磁碟機的話,只有用IPC$的份,但如果你還同時想用已連接進來的資料夾,那建議你還是用網路磁碟機連接的方便.... 1219 錯誤碼就是你已經有一個IPC$連結正在使用中,如果想用另外的權限使用該IPC$,請先中斷先前的連接~~ 不過有個矛盾點~我懶的測,既然網路磁碟機也是用IPC$管道,那同一主機下的不同資料夾使用不同權限,可以多個不同權限IPC$共存嗎?我等下去玩玩看~~~ 我不懂,不懂,不懂....所以我才來ktop學工夫
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
|
ivankuo
中階會員 發表:132 回覆:272 積分:95 註冊:2002-11-21 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |