![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.5ベストアンサー
- 回答日時:
セッションを超えてカーネルオブジェクトを共有したい場合,
名前にGlobal\という接頭辞を追加します。
MSDN: Kernel Object Namespaces (Windows)
http://msdn.microsoft.com/en-us/library/aa382954 …
No.4
- 回答日時:
#1です。
自説にこだわるわけではないのですが、ファイル方式が良いのでは?
簡単だし、後始末の心配も無いですからね。ネットワーク全体に
拡張しても使えますし・・・
名前付きミューテックスを使うならOpenMutexで出来ているものを
取得しますが、取得できた時点でアウトですね。取得できないとして、
ヨーイドンで複数のプロセスが同じ名前のミューテックスを作るかも
知れないから、CreateMutex後にもチェックします。
また、COMを使えるなら、ミューテックスではなく、WMIプロセス管理で
自分と同名のプロセスが2個以上ないか調べるという方法もあります。
ご返事ありがとうございます。
>自説にこだわるわけではないのですが、ファイル方式が良いのでは?
>簡単だし、後始末の心配も無いですからね。ネットワーク全体に
>拡張しても使えますし・・・
ファイル形式の場合、途中で強制終了とかした場合、ファイルが
残りっぱなしになるので、怖いのです。。。
なんとかミューテックスで実現したいのです。
ご返事ありがとうございます。
No.3
- 回答日時:
やったことないので無責任だけど, GetLastError は使える?
ご返事ありがとうございます。
GetLastErrorは現在の
CreateMutex(NULL,TRUE,"EXENAME")
で使えています!!!
よろしくお願いします。
No.2
- 回答日時:
・名前「無し」ミューテックス
CreateMutex(NULL,TRUE,NULL)
・名前「付き」ミューテックス
CreateMutex(NULL,TRUE,"EXENAME")
>名前付きシステム ミューテックスにするとできるみたいなのですが、どのようにすればよいのでしょうか?
ミューテックスを使おうとすると、接続する方ではなく、接続された方で排他制御しなければなりません。
そうすると「サービスとして接続を提供する」など、かなり複雑な処理をしないとなりません。
であれば、他の回答のように「接続する方が、接続される端末にあるファイルを排他モードで開いてみる」と言う方法を取るしかないでしょう。
具体的な動作を参考にするなら「Microsoft Accessが、データベースファイル(mdbファイル)をオープンした時に作られる、ロックファイル(ldbファイル)の働き」を調べてみると良いでしょう。
私の書き方の間違いでたいへんもうしわけございません。
>ローカルコンピュータ単位で排他制御をかけたいのです。
ですが、1つのコンピュータでそのEXEは1個しか起動できないようにしたいということなのです。
複数のコンピュータ間で、1つだけというのではないのです。。。。
現在
CreateMutex(NULL,TRUE,"EXENAME")
で、AユーザでEXEを2個起動しようとしたらエラー。
Aユーザで1個。Bユーザで1個は起動OKな状態を
Aユーザで1個起動していれば、Bユーザで起動しようとしたらエラーと
したいのです。。。
お手数ですがよろしくお願いします。
No.1
- 回答日時:
同一マシン内の異なるプロセス間で排他制御するなら分かるんですが、
異なるマシン間でミューテックスによる制御って、上手くいくんです
かね?聞いたことがないなぁ。
私の使っている手は各PCから参照できるファイルを排他モードで開く
という方法です。
尚、名前付きミューテックスは掲題の通り、第3パラメータに有効な
名前を指定するだけで作成できます。
私の書き方の間違いでたいへんもうしわけございません。
>ローカルコンピュータ単位で排他制御をかけたいのです。
ですが、1つのコンピュータでそのEXEは1個しか起動できないようにしたいということなのです。
複数のコンピュータ間で、1つだけというのではないのです。。。。
現在
CreateMutex(NULL,TRUE,"EXENAME")
で、AユーザでEXEを2個起動しようとしたらエラー。
Aユーザで1個。Bユーザで1個は起動OKな状態を
Aユーザで1個起動していれば、Bユーザで起動しようとしたらエラーと
したいのです。。。
お手数ですがよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー Windowsサーバでグループを検索したい 1 2023/04/17 15:30
- 財務・会計・経理 (給与計算ソフト)給与支払額を、1万円単位に自動で丸めたい 1 2023/06/16 20:30
- 数学 ダミー変数での相関係数の算出にやり方(疫学の分析手法について) 14 2023/03/17 11:46
- その他(セキュリティ) 匿名チャットアプリでの知られたくない会話 個人情報について 1 2023/03/29 18:08
- ハッキング・フィッシング詐欺 スマホアプリのトラッキング 個人情報について 5 2023/03/31 08:16
- その他(セキュリティ) 匿名チャットアプリ トラッキング 個人情報について 1 2023/03/29 20:35
- ノートパソコン バッテリー充電制御アップデートツールの非表示方法 2 2023/04/22 21:15
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- プリンタ・スキャナー 封筒印刷 差出人印刷ずれる 4 2022/05/01 10:12
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
oracle tnsping
-
VBでストアドの戻りパラメータ...
-
インラインフレームでpdfフ...
-
ORA-01013のエラーについて経験...
-
データベースのバックアップ
-
CASE文のエラーについて
-
DATABSE LINKについて
-
SQL*Plusで、コマンドの返答を...
-
Oracleの起動時に、マウントし...
-
「ORA-00907: 右カッコがありま...
-
データのインポートについて
-
oracle11g listener.logの削除
-
ORA-06502のエラー
-
Oracleのバックアップ方法につ...
-
pro*c で pl/sql に変数を渡す...
-
DB容量の確認方法
-
インポートしたら遅くなった
-
ノートンインターネットセキュ...
-
4GB = 4096MB ではない?
-
データベースの復旧方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでストアドの戻りパラメータ...
-
SQL ServerのストアドでOUTPUT...
-
Console.ReadLine()で、入力デ...
-
インラインフレームでpdfフ...
-
SQL*LoaderのDATA引数
-
REDOログファイルを移動したい...
-
Excel別ウィンドウで開く
-
MMAPのMAP_SHAREDについて
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
DOSプロンプトとコマンドプロン...
-
PL/SQLのコンパイルエラーにつ...
-
PL/SQLでログを確認したい。
-
SQL*Plusで、コマンドの返答を...
-
「ORA-00907: 右カッコがありま...
-
4GB = 4096MB ではない?
-
PL/SQL PLS-00103エラーについて
-
Oracleの起動時に、マウントし...
-
ストアド・プロシージャをバッ...
-
SQL実行結果の出力を見やすくし...
おすすめ情報