2016-09-13 20 views
0

どうですか?資格情報に問題があり、パスワードとユーザーをバットファイルに渡す方法がわかりません。文脈をお読みください。batファイルとネットワークパスのWindowsサービス、資格情報の問題

argsパラメータを使用して、batファイルからいくつかの設定値を取得するWindowsサービスを作成しました。このサービスは、希望の場所にtxtファイルを書き込みますが、 ここで私のWindowsサービスのいくつかの基本的なコードです:

static void Main(string[] args) 
    { //args comes from the bat file 

     CmdLineArgs cmdArgs = new CmdLineArgs(args); 

     //pass the values for mydirectory from args 

     AppConfig.NetworkDirectory = cmdArgs.GetArg("/mydirectory"); 

     writefile(AppConfig.NetworkDirectory,"text for file"); 

     if(couldntwriteinpath()) 
      { //...manage error 
            } 
    } 

WRITEFILE手順:

//this is a very simple way of doing this, so you can have an idea of what is going on 
public static void writefile(string path, string text) 
{ string savepathname=path+"\myfile.txt"; 
//uses the class File.writealltext function 
    File.WriteAllText(savepathname, text); 
} 

batファイル:

cd C:\Windows\System32 

sc.exe stop MyService 

sc.exe delete MyService 

timeout 3 

sc.exe create MyService binPath="\"C:\apps\MyService\MyService.exe\" /mydirectory"\\192.168.90.x\homes\writefolder\"" start= auto 
sc.exe start MyService 
PAUSE 

**問題は、「ユーザー名またはパスワードが間違っています」というエラーが表示されることです。

私を助けることができますか?私はhttps://stackoverflow.com/questions/3854026/how-to-give-credentials-in-a-batch-script-that-copies-files-to-a-network-locatio,https://stackoverflow.com/questions/303045/connecting-to-a-network-folder-with-username-password-in-powershellのようなすべてのstackoverflowの答えをしようとしましたが、動作しませんでした。

ユーザーとパスワードをバットに挿入します。したがって、File.WriteAllTextプロシージャを呼び出すと、資格情報も取得されます。私は理解していれば

おかげ

+0

情報はごくわずかです。何が起きているのかを見られるように、バットコードを掲示してください。 – elzooilogico

答えて

0

は、File.WriteAllText手順は、サービスによって実行されたが、それは先のファイルに書き込むための資格情報を持っていません。したがって、このようなタスクを実行するために必要な資格情報を使用してサービスを開始する必要があります。

@echo off 

pushd %__APPDIR__% & rem cd C:\Windows\System32 

setlocal 
set "user=system\username" 
set "[email protected]" 

sc.exe stop MyService 

sc.exe delete MyService 

timeout 3 

sc.exe create MyService binPath="\"C:\apps\MyService\MyService.exe\" /mydirectory"\\192.168.90.x\homes\writefolder\"" start= auto obj= "%user%" password= "%pass%" 
sc.exe start MyService 

endlocal 
popd 
PAUSE 

exit/B 

注にとあなたは、scコマンドのobj=password=スイッチを使用して、サービスの資格情報を設定することがあります。それはあなたのために働くかどうかわからない、通常sc switches =記号の後ろにスペースを期待、あなたのbinPath=には含まれていません。

+0

あなたの答えに感謝!!私はそれを試してあなたに知らせるつもりです。 – Theman

+0

ねえ、私は、 "口座名が無効であるか、存在しないか、または指定された口座名に対してパスワードが無効です"という問題がありました。 私はすでにuser = system \ mycomputerusernameとuser = mycomputerusernameを使用しようとしました。ありがとう – Theman

+0

@ theman、私はあなたを理解しているかどうかはわかりません。 'mycomputerusername'は' username'か 'machinename_username'だけです。たとえば、私のコンピュータ名は 'lenovo'であり、私のユーザ名' miguel'は私のケースでは 'obj =" lenovo \ miguel "password =" p @ ssword "'が完全に動作します。アカウントが権限を昇格していない可能性がありますので、フィードバックをお願いします。これを行うには、powershellを使用する方法とレジストリキーを更新する方法があります。私たちはあなたの助けをたくさんありがたいことに、彼らの1人を使って目的の仕事をしています。 – elzooilogico

関連する問題