I am unable to clone any templates. When I hit the “Clone” button, nothing happens. I opened a console and tried it, and get the following errors:
00:01:27 - : Assembly of D:\plugins\Valueroweiurowue\Valueroweiurowue.csproj is not up to date. Need to recompile ...
00:01:27 ERR : System.ComponentModel.Win32Exception in System: A required privilege is not held by the client
at Microsoft.Win32.NativeMethods.CreateDirectory(String path, SafeLocalMemHandle acl)
at System.CodeDom.Compiler.TempFileCollection.CreateTempDirectoryWithAce(String directory, String identity)
at System.CodeDom.Compiler.TempFileCollection.GetTempFileName(String tempDir)
at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension, Boolean keepFile)
at Microsoft.CodeDom.Providers.DotNetCompilerPlatform.Compiler.FromFileBatch(CompilerParameters options, String fileNames)
at Microsoft.CodeDom.Providers.DotNetCompilerPlatform.Compiler.CompileAssemblyFromFileBatch(CompilerParameters options, String fileNames)
at VVVV.Hosting.Factories.CSProjectFactory.RecompileIfNeeded(CSProject project)
at VVVV.Hosting.Factories.CSProjectFactory.LoadNodeInfos(String filename)
at VVVV.Hosting.Factories.AbstractFileFactory`1.ExtractNodeInfos(String filename, String arguments)
at VVVV.Hosting.Factories.CSProjectFactory.DoAddFile(String filename)
at VVVV.Hosting.Factories.AbstractFileFactory`1.AddFile(String filename)
at VVVV.Hosting.Factories.AbstractFileFactory`1.Clone(INodeInfo nodeInfo, String path, String name, String category, String version, INodeInfo& newNodeInfo)
at VVVV.Hosting.HDEHost.Clone(INodeInfo nodeInfo, String path, String name, String category, String version)
It does create the folder and the .cs and .csproj files, but when I drag the .csproj file into a patch, I get the same error again:
00:06:01 - : Assembly of D:\plugins\Valueroweiurowue\Valueroweiurowue.csproj is not up to date. Need to recompile ...
00:06:01 ERR : Exception during extracting node infos from file D:\plugins\Valueroweiurowue\Valueroweiurowue.csproj: A required privilege is not held by the client
Looks like it is unable to create some temp directory? All the usual directories are in the created plugin folder.
This is with both x86 and x64 35.8 and 38.1, on Win10 Enterprise x64 1903. I do have Visual Studio Pro 2017 installed if that could be mucking things up. And this is with an administrator account. Whaaaasup? Thanks!
Hmmm, actually it may be because I am already running with elevated privileges. UAC is off, and I am running as an administrator, and I get the same behavior running vvvv.exe as Administrator. Seems there is a bug in Windoze concerning temp folder creation when running elevated introduced with an update. This is particularly obnoxious on Win10 because to really turn UAC off and on you have to edit the registry and reboot, major pain just to clone a plugin. I’ll poke around on this a bit more.
(And before anyone answers with “so just don’t run with UAC off, why would anyone want to do that, it’s there for your own good blah blah blah”, let me just say that it fixes other obnoxious behaviors that got even more egregious with Win10.)
It is in fact running with UAC off that manifests this. I turned UAC back on and was able to clone again, running both normally and starting vvvv.exe as Administrator. What a righteous pain in the ass.
Well the plot thickens. I turned UAC back off again (and by that mean setting EnableLUA to 0 in the registry), and lo and behold, could clone just fine.
So I’m guessing the time I cloned with UAC on, some folder was able to be created somewhere, and when UAC was turned off again, clones work because that folder exists. That or there is some weird statefulness in Win10 about an update being applied when UAC was off, etc. Or some combination. This happened on two different Win10 systems that I had turned UAC off before installing and running vvvv.
So seems the workaround, should someone see the same problem, is to turn UAC back on (doing it via the usual control panel Users option will work as it resets EnableLUA back to 1), do a clone, then you can set EnableLUA back to 0 and clones will still work.
Doing this also makes the previous clones that failed usable. Dragging the same .csproj file into a patch which previously threw the error now works fine. So the problem is not in the creation of the clone, but in the compilation.