mirror of https://github.com/python/cpython
Fix bdist_wininst --user-access-control for win2k
This commit is contained in:
parent
6d7702ecd1
commit
5bd88333ee
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -2115,11 +2115,6 @@ BOOL NeedAutoUAC()
|
|||
{
|
||||
HKEY hk;
|
||||
char key_name[80];
|
||||
OSVERSIONINFO winverinfo;
|
||||
winverinfo.dwOSVersionInfoSize = sizeof(winverinfo);
|
||||
// If less than XP, then we can't do it (and its not necessary).
|
||||
if (!GetVersionEx(&winverinfo) || winverinfo.dwMajorVersion < 5)
|
||||
return FALSE;
|
||||
// no Python version info == we can't know yet.
|
||||
if (target_version[0] == '\0')
|
||||
return FALSE;
|
||||
|
@ -2135,6 +2130,23 @@ BOOL NeedAutoUAC()
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
// Returns TRUE if the platform supports UAC.
|
||||
BOOL PlatformSupportsUAC()
|
||||
{
|
||||
// Note that win2k does seem to support ShellExecute with 'runas',
|
||||
// but does *not* support IsUserAnAdmin - so we just pretend things
|
||||
// only work on XP and later.
|
||||
BOOL bIsWindowsXPorLater;
|
||||
OSVERSIONINFO winverinfo;
|
||||
winverinfo.dwOSVersionInfoSize = sizeof(winverinfo);
|
||||
if (!GetVersionEx(&winverinfo))
|
||||
return FALSE; // something bad has gone wrong
|
||||
bIsWindowsXPorLater =
|
||||
( (winverinfo.dwMajorVersion > 5) ||
|
||||
( (winverinfo.dwMajorVersion == 5) && (winverinfo.dwMinorVersion >= 1) ));
|
||||
return bIsWindowsXPorLater;
|
||||
}
|
||||
|
||||
// Spawn ourself as an elevated application. On failure, a message is
|
||||
// displayed to the user - but this app will always terminate, even
|
||||
// on error.
|
||||
|
@ -2190,7 +2202,7 @@ int DoInstall(void)
|
|||
|
||||
// See if we need to do the Vista UAC magic.
|
||||
if (strcmp(user_access_control, "force")==0) {
|
||||
if (!MyIsUserAnAdmin()) {
|
||||
if (PlatformSupportsUAC() && !MyIsUserAnAdmin()) {
|
||||
SpawnUAC();
|
||||
return 0;
|
||||
}
|
||||
|
@ -2198,7 +2210,7 @@ int DoInstall(void)
|
|||
} else if (strcmp(user_access_control, "auto")==0) {
|
||||
// Check if it looks like we need UAC control, based
|
||||
// on how Python itself was installed.
|
||||
if (!MyIsUserAnAdmin() && NeedAutoUAC()) {
|
||||
if (PlatformSupportsUAC() && !MyIsUserAnAdmin() && NeedAutoUAC()) {
|
||||
SpawnUAC();
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue