0

我正在编写一个可以远程运行 shell 命令的应用程序。我需要以 tc -l 455管理员身份运行命令:我决定以管理权限在 applescript 中运行此命令,但在目标 c 中,我需要获取此输出并将其显示在 NSExView 中。这是我的代码:

NSAppleScript* runWithAdminPrivileges = [[NSAppleScript alloc] initWithSource:@"do     shell script \"nc -l 455\" with administrator privileges"];
NSDictionary *error = [[NSDictionary alloc] init];
[runWithAdminPrivileges executeAndReturnError:&error];
NSLog(@"%@", error);

该命令正在运行,但我无法看到输出。有没有办法用我的代码做到这一点,或者有没有办法在目标 c 中以管理员权限运行这个 shell 命令并查看输出?

提前致谢,

4

1 回答 1

1

-[NSAppleScript executeAndReturnError:]返回您忽略的结果,这是脚本的结果。它是一个 NSAppleEventDescriptor,而不是 NSString,但你可以通过调用-stringValue它来获得一个 NSString。此外,error参数遵循与其他地方的参数相同的规则NSError **,因此您不需要先用对象填充它。总结一下:

NSDictionary *errorInfo; // no initialization necessary.
NSAppleEventDescriptor *scriptResult = [runWithAdminPrivileges executeAndReturnError:&error];
if (scriptResult)
    NSLog(@“%@“, [scriptResult stringValue]);
else
    NSLog(@“%@“, errorInfo;
于 2013-12-19T02:10:01.400 回答