• ベストアンサー

_access関数が EACCES エラーとなる

haporunの回答

  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

サービスはLocalSystemアカウント権限で動いていて、この権限がまた変なので、困ったものです。 NT上では、ランタイム関数のファイル系はいい加減なことを言うときもあるので、APIにしたほうがいいですよ。 そりゃ、SecurityDiscriptorは複雑で意味不明ですけど。 サービスプロセスが作ったプロセスはサービスプロセスで動くので、ユーザーの権限では動いていません。 lpSecurityAttributesにNULLを指定しても、ハンドルが継承されないだけで、アクセス権や所有者については親から継承されてしまいます。 Cのランタイム関数は、プロセスがNT上で何かを処理する権限うんぬんで動いていないので、当てにしないほうがいいですよ。 最近プロセスとかスレッドとか勉強中の、はぽるんでした。

nabezo-
質問者

お礼

アドバイス、ありがとうございました。 セキュリティは難しいですね。。。 これをきっかけに勉強しようと思います。

関連するQ&A

  • Excel と Access または、Access と Excel との連携処理

    (1)(初期処理として)、Excel(1.xls)よりアイテムセットしたパラメータ(起動するAccessのパス名)でAccess(A.mdb)を起動する。 (2)Access(A.mdb)の自動処理が終わると、次に起動させるAccess(B.mdb)のパスパラメータをExcel(1.xls)に渡し、Access(A.mdb)を終了する。 (3)パラメータを受け取ったExcel(1.xls)は、Access(B.mdb)を起動し、処理をする。 (1)より開始して、(2)(3)の繰り返し出来る方法を教えてください。 よろしくお願いします。

  • アクセス DLookup関数 なぜエラーになるのか

    アクセス DLookup関数 なぜエラーになるのかわからないです。 testと言うテーブルがあり、a・bと言うフィールドがあります。 aフィールドにあああと入ってる場合のbフィールドの値を取得したいのですが Debug.Print DLookup("[b]", "test", "[a] = あああ") だと、 実行時エラー2471「クエリ パラメータとして指定した式でエラー'[あああ]'が発生しました。」 になります。 どこがおかしいのか教えていただけますか?

  • Access95→Access2000への変換について。

    こんにちは。 Access95で作成したプログラムを、Access2000に変換して使用したいので、 Access2000で95のバージョンのプログラムを開き、データベースの変換を したのですが、なんだか上手くいきません。 (1)「起動時の設定」をしていないのに、起動時の設定がかかる (データベースウィンドウの表示など) (2)95のときは出ていなかったエラー(パラメータの入力)を求められる (3)フォームのコードを開いて、コンパイルをかけようとしてもグレー表示に  なっているため使用できない 以上、おかしいと思われる点ですが、95のプログラムは私が作成したものでは ないため、詳しいことがよく分からないのです。 データベースはテーブルのみのもの(仮にAとします)と、Aからリンクした テーブル、クエリ、フォーム、レポート、モジュールなどがあるデータベース (Bとします)の二つのデータベースを使用しています。 私のコンピュータの環境としては、 OSはWindows98 Second Edition、 Accessは97と2000が入っていますが95は入っていません。 大至急何とかしたいのですが、よろしくお願いします。

  • Microsoft Accessが起動できなくなりました。

    Microsoft Accessが起動できなくなりました。 Microsoft Access(アクセス)が起動できなくなりました。 ウイルス対策ソフトを入れたのですが、重くなるのがいやだったので、 同時に不要なサービスの停止を行っています。 するとエラーメッセージ 「ディスクまたはネットワークのエラーです」 ⇒OKを押すと⇒ 「システムエラーまたはメモリ不足のため、Microsoft Accessを起動できません。 不要なプログラムを終了して、再度実行してください。」 と出ます。 どうすればよいでしょうか?

  • Access-Runtimeについて

    Access2000でデータベースパスワード付きのmdb(DB_A.mdb)を起動するためのDB(DB_B.mde)を作成しました。 DB_B.mdeからDB_A.mdbを起動させるために"CreateObject"を使っていますが、RuntimeではCreateObjectを受け付けてくれません。 CreateObject("Access.Application")に相当するものをご存知の方、ご教授いただけませんか? よろしくお願い致しますm(_ _)m

  • C++ で、 "access violation"

    作っていたプログラムに、ある関数をいれました。 コンパイルはできたのですが、その関数を定義している行まで実行したら、そこで、"access violation"のエラーがでて、とまります。 その関数は、複素数の計算をしているのですが、複素数として定義した変数をすべて消すとこのエラーはなくなりました。しかし、複素数の計算をする必要があるので、それでは困ります。 また、その関数をただ呼び出すだけの簡単なプログラムを作ったところ、問題なく動きました。 何か考えられる問題はないでしょうか? 初心者なので、かなり初歩的なことかもしれないのですが、自分としてはなぜこうなるのか、分かりません。チェックの仕方なども含めて、アドバイスいただきたいです。

  • ACCESS文字連結

    ACCESSでひとつの項目の文字を編集したい。 後ろに文字を追加したいのですが、関数がわかりません。 例 A00001 B00002 C0003 Aを追加する。 A00001A B00002A C0003A 宜しくお願いします。

  • system関数のエラー検出

    UNIXのmanで調べたところ、system関数(コマンド)はエラー時、-1をかえし、errnoに"EAGAIN","EINTR","ENOMEN"を代入するようなのですが、 実際にプログラムにくみこんでみると、1を返しているようです。 (systemで実行するコマンド名をわざと間違えて実行しています。) これでは、systemで実行しようとしているコマンドが1を返しているのか、systemでエラーが起きているのか判断できません。 どのように判定すればよいのでしょうか。

  • ネットワークパスが見つかりません、というエラー

    AマシンとBマシンはネットワークでつながってます。 しかし、AからBの中身をみようとすると 「ネットワークパスが見つかりません」 というエラーになります。 Bからネットワーク全体→でみようとすると、 そのワークグループには、自分のマシンしか 見えません。 Bマシンで、 Pingをうっても返ってきますし、 Ipconfigうっても、IPアドレスはとれてます。 なにか解決策を教えてください。

  • Access:IIf関数について

    Accessの関数の記入方法について教えてください。 テーブルで2つの日付が入っています。 形式はyyyy/mm/ddの日付型です。 日付Aと日付Bとして、同じ日付が入っているかもしくは日付Aの方が古い日付が入っています。 IIfで判定を入れたいのですが、同日もしくはAから1か月以内にBの日付が入っていたら、〇としたいです。 全体像がわかりにくく申し訳ないのですが、何かヒントをいただければ助かります。 よろしくお願いいたします。