运行 python 应用作为管理员而不提示进入管理页面
Run python app as admin without prompting for admin page
我们可以 运行 python 应用程序作为管理员通过将管理员凭据存储在 python 代码中并且当 python 应用程序需要管理员权限时它应该使用存储的管理员凭据在它的代码中 运行 具有管理员权限。但它不应该提示进入管理页面。
让管理员凭据成为
用户名:admin
通过:admin@123
这是我在WinXP和Win7上成功使用的代码,我看没有
它不能在 Win10 上运行的原因。
global userH
userH = None
def try_login(name, domain, password):
global userH
try:
logging.info("Trying to login as: %s/%s" % (domain, name))
userH = win32security.LogonUser(name, domain, password,
win32security.LOGON32_LOGON_INTERACTIVE,
win32security.LOGON32_PROVIDER_DEFAULT)
if None!=userH:
win32security.ImpersonateLoggedOnUser(userH)
logging.info("Logged in: %s/%s" % (domain, name))
return True
except:
logging.exception("Windows login")
if userH:
try:
win32api.CloseHandle(userH)
except:
pass
userH = None
return False
def logout():
if userH:
try:
win32security.RevertToSelf()
win32api.CloseHandle(userH)
except:
pass
我们可以 运行 python 应用程序作为管理员通过将管理员凭据存储在 python 代码中并且当 python 应用程序需要管理员权限时它应该使用存储的管理员凭据在它的代码中 运行 具有管理员权限。但它不应该提示进入管理页面。
让管理员凭据成为 用户名:admin 通过:admin@123
这是我在WinXP和Win7上成功使用的代码,我看没有 它不能在 Win10 上运行的原因。
global userH
userH = None
def try_login(name, domain, password):
global userH
try:
logging.info("Trying to login as: %s/%s" % (domain, name))
userH = win32security.LogonUser(name, domain, password,
win32security.LOGON32_LOGON_INTERACTIVE,
win32security.LOGON32_PROVIDER_DEFAULT)
if None!=userH:
win32security.ImpersonateLoggedOnUser(userH)
logging.info("Logged in: %s/%s" % (domain, name))
return True
except:
logging.exception("Windows login")
if userH:
try:
win32api.CloseHandle(userH)
except:
pass
userH = None
return False
def logout():
if userH:
try:
win32security.RevertToSelf()
win32api.CloseHandle(userH)
except:
pass