助けていただきたい状況があります。特定のユーザー アカウントを使用して Windows Server 2012 R2 でデータベースを実行しています。同じユーザー アカウントで Windows サービスを実行しています。このサービスはいくつかの作業を実行し、DB でいくつかの更新を行います。これまでのところ、これは非常にうまく機能しています。
このサービスは、ある時点で外部プロセスを実行する必要があります。これをProcessStartInfo
Andで実行しますProcess.Start
。すると、次の例外が発生します。
System.ComponentModel.Win32Exception (0x80004005): System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)、System.Diagnostics.Process.Start()、System.Diagnostics.Process.Start(ProcessStartInfo startInfo) でアクセスが拒否されました
これによればスタックオーバーフローの回答このユーザー (Active Directory ユーザー) をサーバーに追加する必要があります。現状では、ユーザーはサーバーにアクセスできません。
そして、私は実際にこれをこの状態に保ち、サーバーにアクセスせずにプロセス (プログラム) を開始するアクセス権のみをユーザーに与えたいと思っています。
それは可能でしょうか、それとも私が間違った道を進んでいるのでしょうか?
コントロール パネル >> ユーザー アカウント >> ユーザー アカウントの管理 >> 追加... でおそらく作業は完了しますが、アクセス レベルのリストでどのアクセス レベルを選択すればよいかわかりません。
答え1
わかりました。例外は少し誤解を招くと思います。ユーザーはアプリケーションの実行を許可されていないように見えましたが、実際の問題は、ユーザーがアプリケーションが配置されているディレクトリにアクセスできなかったことです。
- フォルダーのセキュリティ設定を変更して
Read & Execute
ユーザーに権限を許可すると、この問題は解決します。
この方法では、ユーザーをサーバーに追加する必要はありません。