2009-11-20 77 views
0

vs2008,c#:我第一次運行winforms應用程序需要在HKLM \ Software中創建一個設置。顯然是權限問題,但要求是用戶可能沒有管理員權限,手動設置權限在最終用戶上是不可能的。我可以在安裝過程中創建密鑰,但是有什麼方法可以從程序中執行此操作?win7-64 c#development的註冊表權限問題

RegistryKey key = Registry.LocalMachine.CreateSubKey(@「Software \ MyCompany \ MyApp 1.0」);

僅從vs2008測試應用程序會產生此錯誤: 拒絕訪問註冊表項'HKEY_LOCAL_MACHINE \ Software \ MyCompany \ MyApp'。

如果我運行它作爲管理沒有錯誤。

回答

1

從您的程序執行此操作的唯一方法是執行代碼,該代碼在具有足夠權限的帳戶下寫入註冊表。你可以看看這個article,它給出了一個冒充用戶的例子。有一些安全considerations要考慮到這種方法,恕我直言,最好的辦法是在程序安裝過程中執行此操作。

1

這是Win7的UAC。如果您想訪問註冊表項,您必須在清單中設置該程序需要管理員權限或輕鬆刪除。所以你可以寫

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />   
     </requestedPrivileges> 
    </security> 
    </trustInfo> 

for admin rights into the app.manifest in your properties folder or you write 

    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 

如果你不想使用管理員權限。