CFExecute не выполняет appcmd.exe - PullRequest
2 голосов
/ 09 декабря 2011

Я создал следующий код на сервере Cofdfusion: имя файла: testWebsite.cfm

<cfoutput>
<cfset exec_command = "add site /name:""demosite"" /bindings:http://demosite.testserver.com:80 /physicalpath:""D:\Websites\demosite"" ">

<cfexecute name="C:\Windows\System32\inetsrv\appcmd.exe" arguments="#exec_command#" timeout="60" />

Done!
</cfoutput>

Но когда я запускаю этот файл, например http://www.demoserver.com/testcases/testWebsite.cfm

Это просто отображает "Готово!" без каких-либо ошибок он не выполняет код add site .

Обратившись к многочисленным документам, я проверил права пользователей, под которыми выполняются оба документа. Служба coldfusion работает как пользователь домена Webserver@domain.com Я не знаю, как проверить то же самое для IIS. Поэтому я проверил Всемирная служба публикации и Служба администрирования IIS - работает как Локальная система .

Даже если я войду в систему как администратор, я не смогу добавить пользователя веб-сервера *1024* в папку inetsrv или appcmd.exe , расположенную в C: \ Windows \ System32

Пожалуйста, помогите с любыми идеями / предложениями.

Спасибо.

1 Ответ

1 голос
/ 13 декабря 2011

Если appcmd.exe вызывается из cmd.exe, он должен работать:

<cfset vcCmdPath = "C:\Windows\system32\cmd.exe">
<cfset vcAppCmdArg = "/c C:\Windows\System32\inetsrv\appcmd.exe">
<cfset exec_command = "add site /name:""demosite"" /bindings:http://demosite.testserver.com:80 /physicalpath:""D:\Websites\demosite"" ">

<cfexecute name="#vcCmdPath#" arguments="#vcAppCmdArg# #exec_command#" variable="vcAppCmdResults" timeout="60"></cfexecute>

<cfoutput>#vcAppCmdResults#</cfoutput>

Я предпочитаю использовать переменные для cmd.exe и appcmd.exe.

...