我想从我的 java 应用程序自动创建新电子邮件。为此,我正在生成一个 VBS 脚本,它将收集所有信息(电子邮件内容、主题、附件等),并将生成 VBS 脚本,该脚本将从 Outlook 打开一个新的电子邮件 View ,其中所有字段都正确。(我不知道)不想自动发送电子邮件,只想在 Outlook 客户端中创建一封新邮件。)下面您可以看到我如何从 java APP 运行脚本:
Runtime.getRuntime().exec("wscript " + nameOfScript);
我的 Java 应用程序始终以管理员权限运行。
当用户使用管理员权限打开 Outlook App 应用程序时,一切正常。
当用户在没有管理员权限的情况下打开 Outlook App 应用程序时,该脚本将不再起作用。它将在以下行失败:
Set Outlook = GetObject(, "Outlook.Application")
错误代码为 429 -> https://support.microsoft.com/en-ca/help/828550/you-receive-run-time-error-429-when-you-automate-office-applications
似乎因为我使用管理员权限运行脚本,所以如果 Outlook 在没有管理员权限的情况下运行,GetObject 函数将始终失败。
这个问题有解决方法吗?
预先感谢您的帮助!
最佳答案
你可以从Windows使用runas服务,你的命令将变成这样
String command = "runas /user:"+domain+"/"+user+" \"wscript C:\\Path\\to\\your\\script.vbs\"";
不好的部分是 runas 命令需要用户密码,最糟糕的部分是您无法通过 Java 进程提供它。 必须从键盘输入。
这不会起作用:
while ((line = is.readLine()) != null)
{
System.out.println(line);
if(line.toLowerCase().matches(".*enter.*password.*"))
{
System.out.println("Writing password for the user");
os.write(password);
os.write(System.getProperty("line.separator"));
os.close();
}
}
你可以做的是:
- 用上面的runas命令编写一个.bat文件来执行它并让
- 用户在 cmd 窗口中输入密码
关于java - 从不同的安全上下文运行 VBS 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53523059/