1

我在公司经常处理 Lotus Notes。我用 C# 编写了一个很棒的应用程序,用于将特定文件复制到用户的 Lotus Notes 目录和从用户的 Lotus Notes 目录复制。现在我想在 Objective C 中为 OSX 编写该应用程序。我有一些不同的文件需要从 ~/Library/Application Support/Lotus Notes Data/ 复制。

当我运行测试以复制单个文件时,我遇到了管理问题。提示用户输入管理员凭据并使用新获得的权限执行文件复制代码的最佳/最简单方法是什么(我是初学者)?

我确实尝试实现我在网上找到的 BLAuthentication 类,但它无法编译。我目前无法访问我的工作计算机来发布代码。

4

2 回答 2

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 回答
0

使用 Apple Script 复制具有特权访问权限的文件。

do shell script "cp source_path destination_path" with administrator privileges

其中源路径是要复制的文件的路径。

您可以通过在捆绑包中添加带有上述脚本的“.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 回答