[英]How to smartly register a 32-bit COM/DLL component programmatically on different targeting platforms?
[英]How to register a same COM dll for different user account in the same system
我有一個win32 COM dll。 我想為同一系統中的不同用戶注冊此dll。
每個用戶的dll位置不同。
C:\users\user1\mydll.dll
C:\users\user2\mydll.dll
C:\users\user3\mydll.dll
安裝過程將注冊dll。
問題:
如果user1卸載產品,mydll.dll將被取消注冊,因此不會為user2和user3運行應用程序。
解:
我可以單獨為每個用戶注冊mydll.dll。(user1,user2等)
您不能為其他用戶注冊(作為單個用戶)DLL。 如果你有足夠的權限,你可以在給定的機器上注冊一個DLL( HKEY_LOCAL_MACHINE
),你可以自己注冊它( HKEY_CURRENT_USER
),但你不能為其他用戶注冊( HKEY_USERS\\S-1-5-21-*
)。
在嘗試使用user1的權限編寫C:\\users\\user2\\mydll.dll
之前,您可能遇到過同樣的問題。 雖然管理員用戶功能強大,可以寫入\\Program Files\\
,但它們並非無所不能。 用戶目錄是禁止的。
我想你應該將你的dll放在共享位置(例如:D&S \\ Application Data \\ My Company \\ Shared),安裝程序應將其標記為“共享文件”(我不知道你正在使用什么安裝程序,我正在使用Inno Setup,它有這樣的選項,如果我是對的,這是Windows的標准)。 因此,僅當共享引用計數為零時才應繼續注冊。
MS reccomendations是相同的http://msdn.microsoft.com/en-us/library/ms954376.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.