2009-03-03 15 views
2

私の名前はブラジルのCarlos Imです。 はイムは、このようにファイルを開こうとすると:Delphi:別のコンピュータからファイルを開く

image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp'); 

が、それは仕事をdoesntの。例外を受け取ったIm

クラスEFOpenErrorメッセージ "Can not open file '\ ntmemo01 \ c $ \ ozzy2.bmp'アクセスが拒否されました。

おかげで、 カルロス

+0

Cの$ aが管理共有を隠されている現在のユーザーアカウントが正しい権限を持っていますか? http://support.microsoft.com/kb/314984 – stukelly

答えて

15

あなたは二重のバックスラッシュを使用する必要があります。

image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp'); 

例外が発生する場合は、アプリケーションからファイルにアクセスできません。

最初にすべきことは、Windowsエクスプローラを使用してファイルにアクセスできることです。

スタートメニュー(WinKey + R)の[実行]ダイアログに入力して、何が起こるかを確認してください。うまくいかない場合は、を最初ににしてからプログラムに戻ってください。

+0

image1.picture.loadfromfile( '\\ ntmemo01 \ c $ \ ozzy2.bmp')does not work too。その同じ例外を返す – user67348

+0

私の答えにさらに追加されました。 –

+0

Delphiではダブルバックスラッシュを使用できるとは思いませんか? – Chapel

4

Windowsエクスプローラでこの同じ文字列をコピーするとファイルが開かれますか? それ以外の場合は、エラーで示唆されているように、権利の問題が発生する可能性があります。

6

ntmemo01のC:ドライブは共有されていますか?共有されていない場合は、アクセスできません。共有されているがアクセスにユーザー名とパスワードが必要な場合は、別の方法でアクセスする必要があります。あなたは、プロセス内のユーザ名とパスワードを入力し、それにドライブ文字を割り当てることができます。

const 
    RemoteName = '\\ntmemo01\C$'; 
    UserName = 'yourusername'; 
    Password = 'yourpassword'; 

function MapNetworkDrive: Boolean; 
var 
    NetRes: TNetResource; 
    Res: DWord; 
begin 
    Result := True; 
    FillChar(NetRes, SizeOf(TNetResource), 0); 
    NetRes.dwType := RESOURCETYPE_DISK; 
    NetRes.lpRemoteName := PChar(RemoteName); 
    NetRes.lpLocalName := 'H:'; // Whatever drive letter you want 
    Res := WNetAddConnection2(NetRes, PChar(Password), PChar(UserName), 0); 
    Result := (Res = NO_ERROR); 
end; 

その後マッピングを解除するには:

function UnMapNetworkDrive: Boolean; 
var 
    Res: DWord; 
begin 
    Res := WNetCancelConnection2(PChar('H:'), 0, True); // same drive letter as above 
    Result := (Res + NO_ERROR); 
end; 
+0

C $は管理共有には隠されていますが、ドライブのマッピングが役立ちます。 http://support.microsoft.com/kb/314984 – stukelly

+0

ええ、私は知っています。私は30分ごとにファイルを更新する災害復旧サイトを持っています。上記のコードでIPアドレスを使用して20マイル離れたマシンのC $にマップします。ユーザー名とパスワードが設定されている限り、正常に動作しているようです。 –

5

DRで述べたように、ファイル名はUNC pathのための二重のバックスラッシュが必要です

アクセスが拒否されたメッセージは、ntmemo01コンピュータのC $共有にアクセスする権限がないことを示しています。

C $ aが表示されませんadministrative share現在のユーザーアカウントに正しいアクセス許可がありますか?ドライブを最初にマップする必要があります。Ken White

ドメインに参加しない限り、Windows VistaとWindows 7の管理共有はデフォルトで無効になっています。次のように手動で有効にすることができます。

スタートボタンをクリックし、検索ボックスに「regedit」と入力してEnterキーを押します。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Systemを参照してください。

はLocalAccountTokenFilterPolicyの と呼ばれる新しいDWORDを追加し、の値を与えます。

リブートしてやった!

出典:http://www.paulspoerry.com/2007/05/09/how-to-access-administrative-shares-on-vista-c/

関連する問題