determining if user has shell access
monte at sweattechnologies.com
Fri Oct 15 00:57:14 CDT 2010
> I'm assuming that at this point you don't know if this is some policy setting or simply the removal of some file.
It's a policy setting. Everything works fine if they run as an admin user.
Aha! Google is my friend ;-)
By checking the registry key: HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\DisableCMD"=dword:1 we can find out if cmd.exe is disabled for the current user.
Apparently command.com is often available when cmd isn't but unfortunately if I set the shellCommand to command.com it returns nothing (in vista). If I use command.com on the command line it works fine so I'm assuming the problem is on the LiveCode side of things. It would be good if a few others tested this so we can report it if it's not just my system.
function safeShell pCommand
-- assume the shellCommand has been set appropriately
set the hideConsoleWindows to true
set the itemDel to "\"
if item -1 of the shellCommand is "cmd.exe" AND \
charToNum(queryRegistry("HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\DisableCMD")) = 1 then
-- don't use cmd.exe because shell() won't return
-- don't revert to command.com because there seems to be a problem in the engine
-- still check for empty if your are expecting a result
-- because there's no execution error on os x
-- execution error on windows shellCommand doesn't exist
-- hopefully this catches hash rule blocks
return "Error executing command"
function executeProcess pProcess,pElevate
if pElevate then
open elevated process pProcess for text read
open process pProcess for text read
# Loop until there are no more lines to read.
read from process pProcess for 1 line
if the result = "" or the result = "timed out" then
-- something to add
put it after tReturn
close process pProcess
M E R Goulding Software Development
Bespoke application development for vertical markets
InstallGadget - How to create an installer in 10 seconds
revObjective - Making behavior scripts behave
More information about the use-livecode