Unable to save log or game in 3.6.5, Windows 11

Trying to start a new logfile after playing through a downloaded log from my opponent in the Air Power module, using VASSAL 3.6.5 (x64) in Windows 11.

I get the following dialog box:
Screenshot 2022-04-23 080550

The filepath is to the Documents folder on the C: drive, the SSD on my Lenovo Legion gaming laptop. There’s a Data drive (D:) as well. Does VASSAL not like this filepath?

I tried one with the Panzerkrieg module as well, and got the following log when I attempted to create a new .vsav:

java.nio.file.AccessDeniedException: C:\Users\KHBlo\Documents\VASSAL modules\Panzerkrieg saved games\Kiev Pocket test 2020 03 29.vsav
at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
at java.base/sun.nio.fs.WindowsFileSystemProvider.newFileChannel(WindowsFileSystemProvider.java:121)
at java.base/java.nio.channels.FileChannel.open(FileChannel.java:298)
at java.base/java.nio.channels.FileChannel.open(FileChannel.java:357)
at VASSAL.tools.io.ZipWriter.(ZipWriter.java:54)
at VASSAL.tools.io.ZipWriter.(ZipWriter.java:48)
at VASSAL.build.module.GameState.saveGame(GameState.java:1239)
at VASSAL.build.module.GameState.saveGameAs(GameState.java:971)
at VASSAL.build.module.GameState.saveGame(GameState.java:953)
at VASSAL.build.module.GameState$6.actionPerformed(GameState.java:211)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
at java.desktop/java.awt.Component.processEvent(Component.java:6391)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

I just uninstalled everything, moved my VASSAL modules folder to OneDrive temporarily, reinstalled 3.6.5, moved the VASSAL Modules folder back to its original location, opened VASSAL 3.6.5, opened the Air Power module only, opened the .vlog, clicked through to the end, and am still unable to save other than to the original filename of the .vlog, which I’d rather not do if possible. Never had this issue before, and am running out of ideas. The dialog box was the same as the above. Anyone got any?

Edited with follow-up: It’s got to be the filepath in some capacity. I’ve just discovered I can save both .vlog and .vsav to the desktop. That’s an acceptable workaround, though I’ll have to perform careful file management.

That error is happening either because something is holding the file open or you don’t have permission to write to the file.

There are vanishingly few circumstances in which reinstalling will help. If Vassal runs at all, it’s very unlikely that reinstalling will solve your problem.

1 Like

When I saw the reply, my first thought was, “I’m pretty sure I ought to be able to write to subfolders in my own durned Documents folder.”

My second thought was, “What the heck, might as well check.” So I checked Properties, and…

…sure enough, for some reason my VASSAL Modules folder (Documents\VASSAL Modules) was set to read-only. 0_o How the heck it got that way is beyond me; I didn’t do it. That’s probably why it didn’t occur to me to check. Another instance of Microsoft trying to “help”? I dunno. Anyway, I’ll test that, but probably not until tomorrow. Thanks.

2 Likes

I can’t speculate as to what did change the permissions, but I can tell you that it wasn’t Vassal—there’s no code in Vassal that changes permissions on anything.

1 Like

No, never figured it was VASSAL. My best guess is Microsoft, trying to “protect” the user :crazy_face:.