Todo: 集成多平台 解决因SaiNiu线程抢占资源问题 本地提交测试环境打包 和 正式打包脚本与正式环境打包bat 提交Python32环境包 改进多日志文件生成情况修改打包日志细节
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import win32api
|
||||
import win32con
|
||||
import win32transaction
|
||||
|
||||
keyname = "Pywin32 test transacted registry functions"
|
||||
subkeyname = "test transacted subkey"
|
||||
classname = "Transacted Class"
|
||||
|
||||
trans = win32transaction.CreateTransaction(Description="test RegCreateKeyTransacted")
|
||||
key, disp = win32api.RegCreateKeyEx(
|
||||
win32con.HKEY_CURRENT_USER,
|
||||
keyname,
|
||||
samDesired=win32con.KEY_ALL_ACCESS,
|
||||
Class=classname,
|
||||
)
|
||||
## clean up any existing keys
|
||||
for subk in win32api.RegEnumKeyExW(key):
|
||||
win32api.RegDeleteKey(key, subk[0])
|
||||
|
||||
## reopen key in transacted mode
|
||||
transacted_key = win32api.RegOpenKeyTransacted(
|
||||
Key=win32con.HKEY_CURRENT_USER,
|
||||
SubKey=keyname,
|
||||
Transaction=trans,
|
||||
samDesired=win32con.KEY_ALL_ACCESS,
|
||||
)
|
||||
subkey, disp = win32api.RegCreateKeyEx(
|
||||
transacted_key,
|
||||
subkeyname,
|
||||
Transaction=trans,
|
||||
samDesired=win32con.KEY_ALL_ACCESS,
|
||||
Class=classname,
|
||||
)
|
||||
|
||||
## Newly created key should not be visible from non-transacted handle
|
||||
subkeys = [s[0] for s in win32api.RegEnumKeyExW(key)]
|
||||
assert subkeyname not in subkeys
|
||||
|
||||
transacted_subkeys = [s[0] for s in win32api.RegEnumKeyExW(transacted_key)]
|
||||
assert subkeyname in transacted_subkeys
|
||||
|
||||
## Key should be visible to non-transacted handle after commit
|
||||
win32transaction.CommitTransaction(trans)
|
||||
subkeys = [s[0] for s in win32api.RegEnumKeyExW(key)]
|
||||
assert subkeyname in subkeys
|
||||
|
||||
## test transacted delete
|
||||
del_trans = win32transaction.CreateTransaction(
|
||||
Description="test RegDeleteKeyTransacted"
|
||||
)
|
||||
win32api.RegDeleteKeyEx(key, subkeyname, Transaction=del_trans)
|
||||
## subkey should still show up for non-transacted handle
|
||||
subkeys = [s[0] for s in win32api.RegEnumKeyExW(key)]
|
||||
assert subkeyname in subkeys
|
||||
## ... and should be gone after commit
|
||||
win32transaction.CommitTransaction(del_trans)
|
||||
subkeys = [s[0] for s in win32api.RegEnumKeyExW(key)]
|
||||
assert subkeyname not in subkeys
|
||||
|
||||
win32api.RegDeleteKey(win32con.HKEY_CURRENT_USER, keyname)
|
||||
Reference in New Issue
Block a user