Locking 为什么e4 rcp应用程序在windows XP中被锁定,而不为同一机器中的其他用户启动

Locking 为什么e4 rcp应用程序在windows XP中被锁定,而不为同一机器中的其他用户启动,locking,swt,workspace,e4,Locking,Swt,Workspace,E4,我开发了一个e4 RCP应用程序。 启动应用程序时,创建文件夹“workspace”并在该/.metadata/.lock内 因此,当我切换用户时,我得到一个错误,即已有一个用户正在使用/锁定您的应用程序,无法运行 错误:C:\Program Files…\workspace.metadata.lock(访问被拒绝) 但是我需要在XP中运行我的应用程序以支持多用户 我只有在XP中才有这个问题。在vista中,windows7和Windows8工作正常 在用户切换(在其他用户中运行)后运行应用程序

我开发了一个e4 RCP应用程序。 启动应用程序时,创建文件夹“workspace”并在该/.metadata/.lock内 因此,当我切换用户时,我得到一个错误,即已有一个用户正在使用/锁定您的应用程序,无法运行

错误:C:\Program Files…\workspace.metadata.lock(访问被拒绝)

但是我需要在XP中运行我的应用程序以支持多用户

我只有在XP中才有这个问题。在vista中,windows7和Windows8工作正常

在用户切换(在其他用户中运行)后运行应用程序是否有任何帮助或解决方法

更新

我通过在我的产品文件中添加下面的行来实现这一点,这将负责在用户工作区中启动应用程序

<launcherArgs>
<programArgsWin>-data @user.home/workspace</programArgsWin>
</launcherArgs>

-data@user.home/workspace

不确定这是否适用于XP,但您可以尝试将工作区设置在用户的主目录中。您可以在“LifeCycle”“@PostContextCreate”方法中执行此操作:

@PostContextCreate
public void postContextCreate()
{
最终位置instanceLoc=Platform.getInstanceLocation();
//如果用户指定-data@none选项,TODO instanceLoc将为null
//如果用户指定-data path,则TODO instanceLoc.isSet()将为真
//设置默认值
最终路径路径=Path.get(System.getProperty(“user.home”),“workspace name”);
instanceLoc.set(path.toUri().toURL(),false);

一次只能有一个RCP实例可以访问工作区,因此在除XP之外的所有情况下,每个RCP实例都必须有一个单独的工作区user@greg-449是的,对于在%localappdata%/virtualstore/中创建工作区的所有其他操作系统,除了XP。但是如何在XP中解决这个问题?