]> granicus.if.org Git - python/commitdiff
Merged revisions 63828 via svnmerge from
authorGeorg Brandl <georg@python.org>
Wed, 16 Jul 2008 02:02:25 +0000 (02:02 +0000)
committerGeorg Brandl <georg@python.org>
Wed, 16 Jul 2008 02:02:25 +0000 (02:02 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r63828 | mark.hammond | 2008-05-31 07:11:07 +0200 (Sat, 31 May 2008) | 2 lines

  Fix bdist_wininst --user-access-control for win2k
........

Lib/distutils/command/wininst-6.0.exe
Lib/distutils/command/wininst-7.1.exe
Lib/distutils/command/wininst-9.0-amd64.exe
Lib/distutils/command/wininst-9.0.exe
PC/bdist_wininst/install.c

index 10c981993ba2c2e3a977db8ded201a46d529749d..f57c855a613e2de2b00fff1df431b8d08d171077 100644 (file)
Binary files a/Lib/distutils/command/wininst-6.0.exe and b/Lib/distutils/command/wininst-6.0.exe differ
index 6779aa8d4c1b0d5fb37255f1eea211d92ea6942a..1433bc1ad3775ec9277e13ca8bdca3a5dbc23643 100644 (file)
Binary files a/Lib/distutils/command/wininst-7.1.exe and b/Lib/distutils/command/wininst-7.1.exe differ
index b4cb062c391d230dbf4a7fc3a16536aa3dbc5b42..9dedfcdc2398df99f9540120dba9421452795948 100644 (file)
Binary files a/Lib/distutils/command/wininst-9.0-amd64.exe and b/Lib/distutils/command/wininst-9.0-amd64.exe differ
index 0d04a6678b94b8ecbdde10257396e8c0e85c038c..9102ecdb51fb3af90b850165af47b79c7c330036 100644 (file)
Binary files a/Lib/distutils/command/wininst-9.0.exe and b/Lib/distutils/command/wininst-9.0.exe differ
index 252f4ec33b42b40efdd3171fb7a5362ac01f1c82..38e6c3a86d84a40dcfc8d44db18d2344097929df 100644 (file)
@@ -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;
                }