問題タブ [advapi32]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - アプリケーションの起動中に advapi32.dll で EntryPointNotFoundException が発生する
Windows 7 x64 SP1 の Visual Studio 2013 Update 5 で WPF アプリケーションを開発しています。プログラムを開始したら、http 経由で xml ファイルをダウンロードして解析します。今日まですべて正常に機能していましたが、問題は突然例外が発生し始め、プロジェクトに大きな変更が加えられず、新しい参照が追加されなかったことです。
プログラムを開始すると、 「メソッドまたは操作が実装されていません」というSystem.Windows.Markup.XamlParseException
メッセージがスローされ、以前にも発生したため、コードの1行も実行されませんでした。次に、Visual Studio のIntelliTraceウィンドウを調べたところ、一連の例外が見つかりました。その先頭には、 「DLL 'advapi32.dll' で 'EventSetInformation' という名前のエントリ ポイントが見つかりません」というメッセージが表示されています。 InitializeComponent()
System.EntryPointNotFoundException
検索すると、 Windows 8以降のみのこれとこの話が得られます。したがって、Windows 7にはこのメソッドがありませんが、ここでは例外ですが、(プログラム)がWindows 8とは少しEventSetInformation
も関係がないのに、どのように私のプログラムがこのメソッドを参照できますか? Visual Studio 内に、この advapi32 メソッドをトリガーできる Update-5 関連のコンポーネントがいくつかあると仮定することもできますが、もしそうなら、どうすればこの機能を無効にできますか?
.NET 4.5 を使用してプログラムを編集する
例外情報:
Edit2
スティーブとハンスがコメントで気付いたように、実際の問題は最終的にadvapi32ライブラリに関連していませんでした。私はいくつかのカスタムのものWindowEx
から派生したクラスを持っていましたWindow
、そして私のビジュアルウィンドウは this から派生しましたWindowEx
。たぶん、私のカスタムクラスはいくつかのメソッドを見逃していましたが(例外メッセージを信じるなら)、基本クラスを元に戻し、Window
カスタムロジックWindowEx
をビジュアルウィンドウに直接配置した後、エラーはなくなりました.
windows - Go で記述された Windows サービスの失敗アクションを構成するにはどうすればよいですか?
golang.org/x/sys/windows/svc
パッケージを使用して Go で Windows サービスを作成しています。
これまでのところ、すべてうまく機能しており、とても簡単に使い始めることができます。気に入っています。
自動更新機能をいくつか書きましたが、更新が完了したときにサービスを再起動したいと考えています。
を使用してサービスを再起動するプロセスを生成しようとしましたSCM
が、ローカル システムとして実行中にサービスを制御しようとしたことに関係していると思われるエラー メッセージがログに記録されます。
より良い/より簡単な方法os.Exit(1)
は、サービスをFailure Actions
に設定することRestart on Failure
です。これは見事に機能します!
唯一の問題は、Go を使用してプログラムでこれらのオプションを構成する機能がないように見えることです。
私はいくつかの掘り下げを行いましたが、構造体をChangeServiceConfig2
in に渡すことによって構成されているようですadvapi32.dll
-クラッシュ時に再起動するサービスを作成する方法
golang /sys/blob/master/windows/svc/mgr/config.go で-func updateDescription(handle windows.Handle, desc string) error
コードwindows.ChangeServiceConfig2
は、DLL 呼び出しへのリンクであるを既に呼び出しています。
SERVICE_FAILURE_ACTIONS
構造体の Microsoft ドキュメントはこちらです。
Goを使用してその構造体を構築して渡す方法を理解するのに苦労しています - 誰か洞察を持っていますか?
c# - ユーザーがサービスを開始できるかどうかを確認する
私はウェブでたくさん検索しましたが、助けが見つかりませんでした。私は独自の Windows サービスを持っていますが、メインのソフトウェアから構成できるはずです。
インストール、開始、停止、変更、アンインストールに問題はありません。他のユーザー資格情報を使用してサービスをインストールすることもできます。
しかし、問題があります。サービスをインストールする前に ("cmd" call sc create SERVICENAME [...] ) 入力した資格情報を持つユーザーがサービスを開始できるかどうかを確認したい。そのため、彼がローカルの「サービスとしてログオン」セキュリティ ポリシーに登録されているかどうかを確認する必要があります。ポリシーを変更したくありません。彼がこれを行うことが許可されているかどうかを確認したいだけです。
このチェックをC#で簡単に行うことはできますか?
c# - advapi32.dll を使用した 64 ビット システムへの Windows サービスのインストール
Service Manager にサービスをインストールして実行したいと考えています。私のコードは次のとおりです。
このコードは、私の 32 ビット コンピューターでは完全に機能しますが、64 ビット コンピューターでは機能しません。64ビットで同じ作業を行うにはどうすればよいですか?
windows - GoでEnumServicesStatusExを呼び出す、メモリ割り当て?
Windows サービスから Windows API と対話するアプリを作成しています。
@chowey hereからの多くの支援の後、私はちょっとコツをつかみ、GitHub hereに置いた基本的なライブラリを開始しました。
「サービス」に移りました。マシン上のすべての Windows サービスを一覧表示し、開始、停止、再起動する必要があります。操作するサービス ハンドルを取得すると、開始/停止/再起動は非常に簡単に見えますが、インストールされているサービスのリストを取得するのに苦労しています。
Advapi32.dllの EnumServicesStatusEx は、呼び出す必要がある関数ですが、ENUM_SERVICE_STATUS_PROCESS構造体の配列用に事前に割り当てられたメモリへのポインターが必要です。
null ポインターを使用して関数を呼び出すと、必要なメモリ割り当てサイズが返されますが、Go でメモリを直接割り当てる方法はないと思います。
最初は、メモリ割り当て要件を取得し、 unsafe パッケージを使用して構造体の SizeOf で割り、その要素数を含むスライスを作成し、最初の要素へのポインタを関数に渡すことができると思っていましたが、メモリは文字列データ用のスペースを含める必要がありますが、これはそうではありません。
これをどのように達成できるか知っている人はいますか?:)。