2009-07-06 31 views
0

我有使用Win API函數RegSaveKeyEx將註冊表項保存到文件的代碼。但是,在Win Vista或Win 7上運行時,RegSaveKeyEx會返回ERROR_PRIVILEGE_NOT_HELD。該代碼通過示例函數SetPrivilege使用Microsoft提供的代碼啓用安全特權SE_BACKUP_NAME。RegSaveKeyEx需要立面圖嗎?

一切工作正常在Win XP(admin用戶),或者如果我在Win Vista或贏7.禁用UAC是沒可能使用RegSaveKeyEx在Vista上沒有提升的過程?

回答

1

標準用戶不必SE_BACKUP_NAME特權,所以沒有,RegSaveKeyEx不會在Vista上沒有提升工作。

備份是非常「危險」的特權之一 - 它使您能夠基本讀取磁盤上的任何內容,而不管ACL如何。

1

您也可以前往以下賦予權限的特定用戶(或組)...

Control Panel-> 
    Administrative Tools-> 
    Local Security Policy-> 
     Local Policies-> 
     User Rights Assignment-> Back up files and directories (SE_BACKUP_NAME) 

...並添加你想要的用戶(或組)。或者你可以將用戶添加到備份操作員。

但是,你應該謹慎在這裏。 Michael看到下面的評論。

+1

我會非常謹慎地授予用戶備份權限 - 它允許他們繞過所有文件讀取操作的ACL。這意味着非特權用戶將能夠讀取磁盤上的任何內容 - 即使是緩存的密碼數據。 – Michael 2009-07-06 19:01:21