IDE v1.6.5r2, can only run as Administrator in Windows Domain environment

Hello all,

I’m having issues with the Arduino IDE in a Windows Domain environment. Arduino IDE will not launch for any non-Administrators-- which are the students in our environment.

Arduino was originally installed on a computer by a local Administrator account (we’ll say Mydomainadmin) and an image of that computer was captured to be used for all workstations.

After deploying the image, we realize that students are not able to launch Arduino IDE on any of the workstations. The Arduino splash screen will show for less than a second then disappear. However, anyone who is a member of the Domain Admins security group is able to launch Arduino IDE.

At first, I thought I found the problem right away. The preferences.txt file contained “Sketchbook.path=C:\Users\Mydomainadmin\Documents\Arduino”

We changed that path to Z:\ and used Group Policy to push an updated preferences.txt file out to all workstations’ C:\Program Files (x86)\Arduino\lib\ directory

Z:\ is a location that all students have mapped upon login. I also tried changing the path to a folder on the root of C: to which everyone has full permissions, to no avail

Again, Administrators can launch the IDE (and debugger). When I run the debugger as a student, the output is contained in my screenshot.

Can anyone offer some pointers? I’m at a loss on this one, I can’t remember the last time I’ve posted to a forum but I figure this is the place to ask around if anywhere. Any help is greatly appreciated.

Cheers,

Dave from CO

arduino_debugoutput.png

A little additional information:

I've used the Windows Performance Analyzer to look at what exactly happens when an Administrator successfully opens Arduino IDE versus when a student (non-Admin) fails to launch the application.

A common set of steps appear to occur-- arduino.exe is launched, which calls javaw.exe. The registry is queried for the location of the User's AppData folder. Next conhost.exe runs and I'm not sure exactly what it's doing.

At this point when comparing the two traces side by side, you can already see a difference in the switches used when calling javaw.exe (details below)

The following only happens for an Admin when the IDE enventually launches. For a student, this is where javaw.exe closes and the Arduino IDE splash image disappears.

For an Admin-- Then the registry is queried for the location of the User's Personal Folder (presumably for use as a sketchbook location). Conhost.exe executes again (also unsure of exactly what it's doing here) then C:\Program Files (x86)\Arduino\hardware\tools\listComPorts.exe runs. After conhost.exe runs one more time, it looks like that's all that happens. Arduino IDE is happy and usable, by an Administrator.

(interestingly enough, I don't see listComPorts.exe at C:\Program Files (x86)\Arduino\hardware\tools\ despite turning on hidden Folders and making protected System Files visible)

Here is the javaw.exe command that runs when a student fails to launch the Arduino IDE:

"C:\Program Files (x86)\Arduino\java\bin\javaw.exe" -splash:./lib/splash.png -Dsun.java2d.d3d=false -Xms128M -Xmx512M -classpath "lib;lib\antlr.jar;lib\apple.jar;lib\arduino-core.jar;lib\bcpg-jdk15on-152.jar;lib\bcprov-jdk15on-152.jar;lib\commons-codec-1.7.jar;lib\commons-compress-1.8.jar;lib\commons-exec-1.1.jar;lib\commons-httpclient-3.1.jar;lib\commons-lang3-3.3.2.jar;lib\commons-logging-1.0.4.jar;lib\ecj.jar;lib\guava-18.0.jar;lib\jackson-annotations-2.2.3.jar;lib\jackson-core-2.2.3.jar;lib\jackson-data

And here is the javaw.exe command that runs when an Admin successfully launches the Arduino IDE:

"C:\Program Files (x86)Arduino\java\bin\javaw.exe" -splash:./lib/splash.png -Dsun.java2d.d3d=false -Xms128M -Xmx512M -classpath "lib;lib\antlr.jar;lib\apple.jar;lib\arduino-core.jar;lib\bcpg-jdk15on-152.jar;lib\bcprov-jdk15on-152.jar;lib\commons-codec-1.7.jar;lib\commons-compress-1.8.jar;lib\commons-exec-1.1.jar;lib\commons-httpclient-3.1.jar;lib\commons-lang3-3.3.2.jar;lib\commons-logging-1.0.4.jar;lib\ecj.jar;lib\guava-18.0.jar;lib\jackson-annotations-2.2.3.jar;lib\jackson-core-2.2.3.jar;lib\jackson-databind-2.2.3.jar;lib\j

Can anyone help me account for the difference between how javaw.exe is executed for a student versus an Admin?

Again, thanks in advance for any help.

Further update...going in a slightly different direction now. We were looking through the registry keys that are called upon by Arduino when we may have stumbled upon something.

My manager just showed me a student account successfully launching Arduino. Here's the kicker: It only works when an Administrator logs in, loads the student's Registry hive (ntuser.dat) then the student logs in-- using Switch User, allowing the Administrator to keep regedit.exe open.

This to me sounds like there is a registry key causing the problem, and by leaving the student's ntuser.dat file "open" under an Administrator account the registry keys for that user are locked can't be read-- causing Arduino to use default settings.

Am I barking up the right tree? I sure hope I'm not posting to myself :slight_smile:

Hi David, I just registered because I'm having the exact same issue. Did you end up finding a solution?

I'm in a school environment, and the domain is controlled by an office in another town so I sadly don't have much access to try and figure it out.

My account isn't an admin account, but obviously has more permissions than students as I can run the program but they can't. However, something I did notice was that the admin account and mine both had an Arduino15 folder that got created in AppData. The student account doesn't have one. Presumably their policies restrict writing to AppData.

Downloading the "non-admin" ZIP also creates the same problems.

Running debug yields the following:
Loading configuration...
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:377)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:160)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:147)
at processing.app.windows.Platform.getFolderPathFromRegistry(Platform.java:70)
at processing.app.windows.Platform.recoverSettingsFolderPath(Platform.java:55)
at processing.app.windows.Platform.init(Platform.java:50)
at processing.app.Base.guardedMain(Base.java:153)
at processing.app.Base.main(Base.java:137)

Hi Guys, Did you get to the bottom of this?
I am just starting out down this road and finding the same issues.
I too was wondering if changing the preferences.txt path using "settings.path=U:\arduino" would make a difference but the setting is refusing to take.
Thanks

I have the same problem. I have not found a solution yet so if you do please post.

Thanks