Hi,
On 2014-05-12 22:50+1000, Corinna Vinschen wrote:
On May 12 14:20, Houder wrote:
Of course, it is not really a problem, that regedit cannot be invoked from
Cygwin, as it can
be invoked from the Windows interface ...
However, in some of the "harder" cases of using Gygwin, one needs to have a
"mental" model of
how Cygwin "integrates" with Windows (is my belief) ... and as far I understand
the matter, I
was surprised to find that I could not invoke regedit from bash.
Consequently, I decided to investigate why I got the denial (64-bits Cygwin) at
my end.
First of all, some more info about my "environment":
- I am using Cygwin from Windows 7 ...
- I am using Cygwin from an administrative account ...
- furthermore, using secpol.msc, I have set the ConsentPromptBehaviorAdmin
field in
HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System (key in
registry)
to zero, meaning 'elevate without prompting'
Doesn't matter. The problem is that elevating is a special procedure,
requiring a special form of ShellExecuteEx function, which doesn't
integrate well with the requirements of POSIX fork/exec. Therefore
Cygwin never calls ShellExecuteEx to fork/exec an application, rather it
calls CreateProcess/CreateProcessAsUser, both of which don't provide a
way to elevate a process. Therefore, to elevate a process from a Cygwin
shell, the shell must already run elevated (e.g., right click on "Cygwin
Terminal" -> "Run as Administrator...").
What's really annoying: RegEdit's mainfest does not request "asAdmin"
rights. Rather it only requests "MaximumAllowed". One would think this
means that a CreateProcess call would simply continue with the current
permissions of the user. Not so, unfortunately.
I am not sure which Edition it started in, but I believe regedit opens
as the invoking user from Windows 8.1 at least (perhaps 8, I have a
vague recollection).
--
Regards,
Shaddy
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple