1

私の会社では Lotus Notes をよく扱っています。ユーザーの Lotus Notes ディレクトリとの間で特定のファイルをコピーするための優れたアプリケーションを C# で作成しました。今、Objective C で OSX 用のアプリケーションを書きたいと思っています。~/Library/Application Support/Lotus Notes Data/ からコピーする必要があるいくつかの異なるファイルがあります。

1 つのファイルをコピーするテストを実行すると、管理者の問題が発生します。ユーザーに管理者の資格情報を求め、新しく取得した権限でファイルコピーコードを実行するための最良/最も簡単な方法 (私は初心者です) は何ですか?

オンラインで見つけた BLAuthentication Class を実装しようとしましたが、コンパイルできませんでした。現在、職場のコンピューターにアクセスしてコードを投稿することができません。

4

2 に答える 2

0

Apple Script を使用して、特権アクセスでファイルをコピーします。

do shell script "cp source_path destination_path" with administrator privileges

source path は、コピーするファイルのパスです。

上記のスクリプトを含む「.scpt」ファイルをバンドルに追加し、以下のコードを使用して、Apple スクリプトを呼び出すことができます。

- (void) runEmbeddedScriptFile: (NSString*)fileName
{
    NSString* path = [[NSBundle bundleForClass:[self class]] pathForResource:fileName ofType:@"scpt"];
    NSURL* url = [NSURL fileURLWithPath:path];
    NSDictionary* errors = [NSDictionary dictionary];
    NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors];
    [appleScript executeAndReturnError:nil];
    [appleScript release];
}
于 2013-10-25T09:24:12.063 に答える
0

以下のようにしてみてください: -

NSString *path=[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)lastObject];
NSString *testUrl =[path stringByAppendingPathComponent:@"/LotusNotesData/source.rtf"];
//
if ([[NSFileManager defaultManager]fileExistsAtPath:testUrl]) {
    NSLog(@"yes");
}
//Below destination is folder name which should be exist on your machine or else you can create programmatically as well
NSString *testUrl2 = @"/Users/home/Documents/destination";

NSLog(@"%@",testUrl);
NSLog(@"%@",testUrl2);
NSError *err=nil;

//Now we are copying the souce path to destination folder with appending file name (it can be any your name becuase file manager copy source file contents to your destination file contents)
//Here given file name is a source.rtf where you can give any your name. Also this is for copying source contents to destination contents

NSFileManager *fm=[NSFileManager defaultManager];
if ([fm copyItemAtPath:testUrl toPath:[testUrl2 stringByAppendingPathComponent:@"source.rtf"] error:&err])
{
    NSLog(@"success");
}
else
{
    NSLog(@"%@",[err localizedDescription]);
}
于 2013-10-25T04:43:40.443 に答える