Python SE_SYSTEMTIME_名称权限不存在

Python SE_SYSTEMTIME_名称权限不存在,python,windows,privileges,elevated-privileges,Python,Windows,Privileges,Elevated Privileges,我正在尝试从windows7计算机上的用户帐户而不是管理员帐户更改系统时间。为了更改系统时间,本文提到我们需要拥有SE_SYSTEMTIME_NAME权限。这是我的python脚本 import os,sys import win32api import win32security priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY hToken = win32security.OpenP

我正在尝试从windows7计算机上的用户帐户而不是管理员帐户更改系统时间。为了更改系统时间,本文提到我们需要拥有SE_SYSTEMTIME_NAME权限。这是我的python脚本

import os,sys
import win32api
import win32security

priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY
hToken = win32security.OpenProcessToken (win32api.GetCurrentProcess (), priv_flags)
privilege_id = win32security.LookupPrivilegeValue (None, "SE_SYSTEMTIME_NAME")
win32security.AdjustTokenPrivileges (hToken, 0, [(privilege_id, win32security.SE_PRIVILEGE_ENABLED)])

win32api.SetSystemTime(2015,11,20,20,5,30,0,0)
但是当我执行这个脚本时,我得到了以下错误。这是回溯

Traceback (most recent call last):
  File "D:\Public\Script1.py", line 7, in <module>
    privilege_id = win32security.LookupPrivilegeValue (None, "SE_SYSTEMTIME_NAME")
error: (1313, 'LookupPrivilegeValue', 'A specified privilege does not exist.')
为什么我不能获得特殊的特权。我做错了什么?

您需要的字符串是SeSystemtimePrivilege

在Windows头文件中,它的定义如下:

#DEFINE SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
请看这里:

理想情况下,Python库会将这些字符串定义为命名常量。这是Python中常用的模式

但是它仍然不起作用
我已经回答了这个问题,但还是不行

这是因为权限必须由管理员授予,如果您没有权限,就不能打开权限,这将违反安全性

要授予权限,请使用GPEdit.msc或SecPol.msc。在GPEdit.msc中,选择计算机配置->Windows设置->安全设置->本地策略->用户权限分配。这是您找到特权分配的地方

您可以授予该帐户或该帐户所属的组更改系统时间的权限

但这可能也不是你想要的。 如果您只是希望计算机具有正确的时间,请改为配置windows internet时间服务

控制面板->日期和时间->互联网时间选项卡

选中“与internet时间服务器同步”框如果未选择任何服务器,请选择time.windows.com或pool.ntp.org

这将自动设置每周一次的时间,这将使您的计算机保持在正确时间的几秒钟之内。如果您正在运行一个重要的服务器,您可能需要更频繁地设置它。为此,您需要编辑注册表

转到HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\ NtpClient,并检查值SpecialPollInterval。这是以秒为单位的

默认值为604800,这是一周的秒数。对于每日时间检查,请选择84600。除非您有非常特殊的要求,否则您只需要每天使用。

您需要的字符串是SeSystemtimePrivilege

在Windows头文件中,它的定义如下:

#DEFINE SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
请看这里:

理想情况下,Python库会将这些字符串定义为命名常量。这是Python中常用的模式

但是它仍然不起作用
我已经回答了这个问题,但还是不行

这是因为权限必须由管理员授予,如果您没有权限,就不能打开权限,这将违反安全性

要授予权限,请使用GPEdit.msc或SecPol.msc。在GPEdit.msc中,选择计算机配置->Windows设置->安全设置->本地策略->用户权限分配。这是您找到特权分配的地方

您可以授予该帐户或该帐户所属的组更改系统时间的权限

但这可能也不是你想要的。 如果您只是希望计算机具有正确的时间,请改为配置windows internet时间服务

控制面板->日期和时间->互联网时间选项卡

选中“与internet时间服务器同步”框如果未选择任何服务器,请选择time.windows.com或pool.ntp.org

这将自动设置每周一次的时间,这将使您的计算机保持在正确时间的几秒钟之内。如果您正在运行一个重要的服务器,您可能需要更频繁地设置它。为此,您需要编辑注册表

转到HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\ NtpClient,并检查值SpecialPollInterval。这是以秒为单位的


默认值为604800,这是一周的秒数。对于每日时间检查,请选择84600。除非您有非常特殊的要求,否则您只需要每天使用。

我已经回答了这个问题,但它仍然不起作用。该权限必须由管理员授予,如果您没有权限,则不能将其打开。要授予特权,请使用GPEdit.msc。。。。但是如果您只是想让计算机有正确的时间,请改为配置W32时间服务。我可以通过secpol.msc添加特权吗?我已经回答了这个问题,但它仍然不起作用。该权限必须由管理员授予,如果您没有权限,则不能将其打开。要授予特权,请使用GPEdit.msc。。。。但是如果您只是想让计算机有正确的时间,请改为配置W32时间服务。我可以通过secpol.msc添加权限吗?@eryksun,这将是超级用户的一个问题:-我只提到了他的编程错误,因为这是如此。不管你们怎么说,我都会编辑。@eryksun,那个将是一个qu 超级用户评价:-我只提到了他的编程错误,因为这是如此。然而,这一点已被采纳,我将进行编辑。