我想達到的目標: 我想將我的應用程序的實例計爲一個固定的數字。 如果應用程序的多個實例啓動時,它應該只工作作爲一個「瀏覽器」多個用戶的信號量
她是示例應用程序
的代碼的問題: 它工作正常,如果所有processe只從一個用戶開始 但是,如果我與另一個用戶啓動應用程序,我會得到一個安全異常! (不允許訪問)
有人可以點我在正確的方向,升壓文檔有點缺乏關於這一主題;-)
哪些權限,必須設置爲允許所有其他登錄的用戶訪問?
我想達到的目標: 我想將我的應用程序的實例計爲一個固定的數字。 如果應用程序的多個實例啓動時,它應該只工作作爲一個「瀏覽器」多個用戶的信號量
她是示例應用程序
的代碼的問題: 它工作正常,如果所有processe只從一個用戶開始 但是,如果我與另一個用戶啓動應用程序,我會得到一個安全異常! (不允許訪問)
有人可以點我在正確的方向,升壓文檔有點缺乏關於這一主題;-)
哪些權限,必須設置爲允許所有其他登錄的用戶訪問?
我找到了解決辦法
看起來像實況進行升壓並不壞: -/ http://www.boost.org/doc/libs/1_47_0/doc/html/boost/interprocess/permissions.html
只是要經過許可,將其設置爲「無限制」
boost::interprocess::permissions permtest;
permtest.set_unrestricted();
_getch();
boost::interprocess::named_semaphore
the_semphore(boost::interprocess::open_or_create,"test_semaphore",3,permtest);
我不完全是Windows專家,所以我不能告訴你心中的答案,但你需要知道如何實現named_semaphores(請參閱boost.interprocess的「一些基本解釋」文檔),然後看看建立此資源的權限策略以授予系統範圍的訪問權限。因此,閱讀boost.named_semaphore代碼,如果他們使用文件,更新該文件的權限,並且如果他們使用系統調用,請閱讀該系統調用的Windows API文檔。
不幸的是boost使用信號量的默認安全屬性,並且沒有辦法改變它。使用來自MFC的ATL::CSemaphore
或CSemaphore
或來自WinApi的CreateSemaphore
,並構建安全描述符,允許所有人訪問。
聽起來像是「按預期工作」。非管理員用戶不應該能夠影響管理員用戶(基本安全原則),因此他們不應該能夠專門聲明有限的資源。無論如何,你是否真的打算將你的應用限制在固定數量的計算機上?或者你想要一個固定的數字_per user_? – MSalters
沒關係,這是默認行爲,但我想改變它。 是的,我希望應用程序_per computer_而不是每個用戶 – nobs