2

Mac の GUI を使用してハード ドライブをマウントしました。

ただし、端末コマンドを使用してハード ドライブをマウントしたいと考えています。

mount_smbfsObjective-C Cocoa アプリケーションから端末コマンドを実行するにはどうすればよいですか?

NSTask* task = [[NSTask alloc] init];
[task setLaunchPath:@"/sbin/mount_smbfs"];
[task setArguments:[NSArray arrayWithObjects:@"//user:50000@smb://192.168.2.1/Share",@"Volumes/C$/upload", nil]];
[task launch];

ここに私のコードで編集したものがあります。

4

2 に答える 2

3

への呼び出しをラップしてmount_smbfsNSTaskObj-C プログラムから実行できます。

NSTask* task = [NSTask new];
[task setLaunchPath:@"/sbin/mount_smbfs"];
[task setArguments:[NSArray arrayWithObjects:@"//myUser:myPassword@SERVER/share", @"mountPath", nil]];

setArguments では、少なくとも 2 つの要素 (共有へのパスとマウント ポイント) を持つ配列を提供します。

man mount_smbfsその他の引数オプションも確認してください。

于 2012-12-26T14:08:11.260 に答える
0

AppleScript でこれを行う方が簡単です。

- (BOOL) mount {
    NSAppleScript *script = [[NSAppleScript alloc] initWithSource:
                             @"tell application \"Finder\"\n"
                             "  mount volume \"smb://server.domain/SomeMountPoint\"\n"
                             "end tell"];
    if (!script) {
        NSLog(@"Error creating AppleScript object");
        return NO;
    }

    NSDictionary *errorMessage = nil;
    NSAppleEventDescriptor *result = [script executeAndReturnError:&errorMessage];
    return (BOOL)result;
}

いくつかの制限があります:

  1. NSAppleScriptメインスレッドで使用する必要があります。
  2. Finder がボリュームをマウントしようとしている間、アプリケーションはどのイベントにも応答しません。
  3. マウントに失敗した場合、Finder がエラー メッセージを表示する方法を制御することはできません。
于 2012-12-27T00:34:47.590 に答える